1

チェックボックスがオンになっている場合は、情報を使用して 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 "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 に答える