0

我有一个数据库表,其中包含一个字段名称省位,它加起来了模式的计数,例如:

AB-1
BC-2
CD-4
DE-8
EF-16.... and so on.

现在在表条目中我有一个值 13(省位),这意味着应该检查针对条目 AB、CD、DE(加起来为 13)的复选框。

我无法获得相同背后的逻辑,如何仅检查总和与表中条目相加的那些复选框?

4

3 回答 3

1

您需要检查该值是否在按位总计中。

if( interestedInValue & totalValue == interestedInValue) 
{
  // this value is in the total, check the box
}

和http://msdn.microsoft.com/en-us/library/sbf85k1c(v=vs.71).aspx上的文档

例如 13 = 1 + 4 + 8
13 & 1 == 1 // true
13 & 2 == 2 // false
13 & 4 == 4 // true
13 & 8 == 8 // true
13 & 16 == 16 // 错误的

编辑:更多说明

ab.Checked = 1 && ProvinceBit == 1  // checkbox AB  
bc.Checked = 2 && ProvinceBit == 2  // checkbox BC  
...
于 2012-09-30T14:26:35.433 回答
0

该字段正在使用位标志。

13 是 1101 二进制。

因此,将值转换为位并为每个复选框分配一位。

于 2012-09-30T14:27:25.263 回答
0

通过将您的数字转换为字符串,您可以转换为数组或仅遍历字符串。有点蛮力,但会给你你需要的。

var value = 13
string binary = Convert.ToString(value, 2);
//binary = "1101"
于 2012-10-01T01:57:08.107 回答