1

如果选中复选框,我需要使用信息将 XML 属性值保存在数据库中。如果复选框被选中,则属性值为“TRUE”,否则为假。当我使用 foreach 语句时,通常会分配最后一个枚举值。

这是我的代码的一部分:

XmlAttribute xmlAttribute = xmlDoc.CreateAttribute("BooleanValue");
foreach (string value in list) //list is a List<object>
{
    XmlNode xmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "VALUE", "");
    if (checkBox1.Checked || 
        checkBox2.Checked ||
        checkBox3.Checked)
    xmlAttribute.Value = "TRUE";

    if (!checkBox1.Checked || 
        !checkBox2.Checked ||
        !checkBox3.Checked)
     xmlAttribute.Value = "FALSE";

    xmlNode.Attributes.Append(xmlAttribute);
    xmlNode.InnerText = val;
    childNode.AppendChild(xmlNode);
}

当我运行我的应用程序时,无论如何我都会得到一个 XML 属性xmlAttribute "FALSE" 值。

我需要具备的:我需要具备以下 XML:

<ROOT><NODE><VALUE ATTRIBUTE="TRUE">Value 1</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="TRUE">Value 2</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 3</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 4</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="TRUE">Value 5</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 6</VALUE></NODE>
</ROOT>

我实际得到的:

<ROOT><NODE><VALUE ATTRIBUTE="FALSE">Value 1</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 2</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 3</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 4</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 5</VALUE></NODE>
      <NODE><VALUE ATTRIBUTE="FALSE">Value 6</VALUE></NODE>
</ROOT>

因为在 C# FALSE值停留在 foreach 循环中的最后一个位置

问题是:我该如何分配我的属性的正确值。谢谢

4

2 回答 2

3

我认为你的布尔逻辑是错误的。你目前有

If any are checked  
   mark True  
If any are unchecked  
   mark False  

我会说你可能想else在第一个之后使用,if而不是写一个新的条件。

于 2012-12-18T16:42:32.580 回答
0
if (checkBox1.Checked || 
        checkBox2.Checked ||
        checkBox3.Checked)
    xmlAttribute.Value = "TRUE";

    if (!checkBox1.Checked || 
        !checkBox2.Checked ||
        !checkBox3.Checked)
     xmlAttribute.Value = "FALSE";

因此,如果选中任何一个框,则为 TRUE,如果未选中任何一个框,则用 FALSE 覆盖它。即你结束了

if (checkBox1.Checked && 
        checkBox2.Checked &&
        checkBox3.Checked)
    xmlAttribute.Value = "TRUE"
else
    xmlAttribute.Value = "FALSE"

我正在疯狂地猜测这不是你想要的

于 2012-12-18T18:07:53.490 回答