0

データ グリッドのセル値を XML に出力しようとしています。グリッドのセルは、値が ALLOCATED、AVAILABLE、OCCUPIED のコンボボックス セルです。私のxml出力は、以下に示すような形式である必要があります:(ステータスは各セルのコンボボックスから選択された値で、Xlocは行インデックス、YLocはその特定のセルの列インデックスです)

<Cell XLoc="1" YLoc="1" Status="AVAILABLE"/>
<Cell XLoc="1" YLoc="2" Status="OCCUPIED"/>
<Cell XLoc="1" YLoc="3" Status="OCCUPIED"/>

現在、リストを作成し、グリッドからコンボボックスで選択した値を保存しています。つまり、AVAILABLE、OCCUPIED ....

private List<string> Grid_Values()
{
    List<string> CellValues = new List<string>();

    for (int i = 0; i < ToolMapGrid.Rows.Count; i++)
    {
        for (int j = 0; j < ToolMapGrid.ColumnCount; j++)
        {
            CellValues.Add(ToolMapGrid.Rows[i].Cells[j].Value.ToString());

        }
    }
    ...
}

上記の値をこの方法で XML に書き込んでいます。

List<string> GridValues = Grid_Values();
foreach (string item in GridValues)
{
    writer.WriteStartElement("Cell");
    writer.WriteAttributeString("Status",item);
    writer.WriteEndElement();
}

Xloc と Yloc の値を XML ファイルに書き込む方法がわかりません。コンボ値をリストとして返していますが、同じメソッドで行インデックスと列インデックスも返すようにする方法と、それを XML ファイルに書き込む方法を教えてください。

私を助けてください。前もって感謝します

4

2 に答える 2

0

次のように、3 つのプロパティを持つ XmlInfo という名前の新しいクラスを作成します。

class XmlInfo
{
    string value{get; set;}
    int column {get: set;}
    int row {get; set; }
}

その後、次のようにコードを変更します。

private List<XmlInfo> Grid_Values()
{
    List<XmlInfo> CellValues = new List<XmlInfo>();

    for (int i = 0; i < ToolMapGrid.Rows.Count; i++)
    {
        for (int j = 0; j < ToolMapGrid.ColumnCount; j++)
        {
            XmlInfo nfo = new XmlInfo { 
                value = ToolMapGrid.Rows[i].Cells[j].Value.ToString(), 
                row = i,
                column = j}
            CellValues.Add(nfo);
       }
    }
}

次に、次のようなコードを使用できます。

List<XmlInfo> GridValues = Grid_Values(); 
foreach (XmlInfo item in GridValues) 
{ 
     writer.WriteStartElement("Cell"); 
     writer.WriteAttributeString("Status", item.value); 
     writer.WriteAttributeString("XLoc", item.column); 
     writer.WriteAttributeString("YLoc", item.row); 
     writer.WriteEndElement(); 
}

エディターに直接入力したため、何かを見落としている可能性があるため、構文エラーについて確認することをお勧めします。

于 2013-03-27T21:22:09.553 に答える
0

これが私が実装した方法であり、うまくいきました:)

        for (int i = 0; i < ToolMapGrid.Rows.Count; i++)
        {
            for (int j = 0; j < ToolMapGrid.ColumnCount; j++)
            {
                writer.WriteStartElement("Cell");
                writer.WriteAttributeString("XlOC", (i + 1).ToString());
                writer.WriteAttributeString("YLOC", (j + 1).ToString());
                writer.WriteAttributeString("Status", ToolMapGrid.Rows[i].Cells[j].Value.ToString());
                writer.WriteEndElement();
            }
        }
于 2013-03-28T21:32:22.893 に答える