如果选中复选框,我需要使用信息在数据库中保存XML属性值。如果选中复选框,则属性值为" TRUE"否则为false。当我使用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 &#34; FALSE&#34;无论如何。
我需要拥有的东西: 我需要有以下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循环中的最后位置
问题是:如何分配属性的正确值。感谢
答案 0 :(得分:3)
我认为你的布尔逻辑是错误的。你目前有
If any are checked
mark True
If any are unchecked
mark False
我想你可能想在第一个else
之后使用if
而不是写一个新条件。
答案 1 :(得分: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"
我正在猜测这不是你想要的东西