0

我正在尝试将数据网格的单元格值输出到 XML 。网格的单元格是组合框单元格,其值为 ALLOCATED、AVAILABLE、OCCUPIED。我的 xml 输出需要采用如下形式:(其中 status 是从每个单元格的组合框中选择的值,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

创建一个名为 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 回答