将值从网格写入xml c#

将值从网格写入xml c#,c#,xml,list,datagrid,C#,Xml,List,Datagrid,我试图将数据网格的单元格值输出到XML。网格的单元格是组合框单元格,具有已分配、可用和已占用的值。我的xml输出需要如下所述:(其中status是每个单元格组合框中的选定值,Xloc是行索引,YLoc是该特定单元格的列索引) 目前,我正在创建一个列表并保存combox从网格中选择的值,即可用、已占用 private List<string> Grid_Values() { List<string> CellValues = new List<string

我试图将数据网格的单元格值输出到XML。网格的单元格是组合框单元格,具有已分配、可用和已占用的值。我的xml输出需要如下所述:(其中status是每个单元格组合框中的选定值,Xloc是行索引,YLoc是该特定单元格的列索引)


目前,我正在创建一个列表并保存combox从网格中选择的值,即可用、已占用

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());

        }
    }
    ...
}
私有列表网格_值()
{
List CellValues=新列表();
对于(int i=0;i
我以这种方式将上述值写入XML:

List<string> GridValues = Grid_Values();
foreach (string item in GridValues)
{
    writer.WriteStartElement("Cell");
    writer.WriteAttributeString("Status",item);
    writer.WriteEndElement();
}
List GridValues=Grid_Values();
foreach(GridValues中的字符串项)
{
writer.writeStarteElement(“单元格”);
WriteAttributeString(“状态”,项);
writer.writeedelement();
}
我不明白如何将Xloc和Yloc值写入XML文件。我以列表的形式返回组合值,但是如何使相同的方法也返回行和列索引,以及如何将其写入XML文件


请帮帮我。提前感谢

创建一个名为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(); 
}
之后,按如下方式更改代码:

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(); 
}
私有列表网格_值()
{
List CellValues=新列表();
对于(int i=0;i
然后您可以使用如下代码:

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(); 
}
List GridValues=Grid_Values();
foreach(GridValues中的XmlInfo项)
{ 
writer.writeStarteElement(“单元格”);
WriteAttributeString(“状态”,item.value);
WriteAttributeString(“XLoc”,item.column);
WriteAttributeString(“YLoc”,item.row);
writer.writeedelement();
}

您可能想检查一下语法错误,因为我直接在编辑器中键入了它,可能遗漏了一些内容。

我就是这样实现和工作的:)

for(int i=0;i
不要将数据网格用作数据结构。从网格数据绑定到的表中写入。这就像我需要输入行数和列数,然后单击生成网格的“生成网格”按钮一样。然后,我需要在网格的所有单元格中进行选择。完成后,我单击Generate XML按钮,该按钮将我的所有内容写入XML,因此datagrid是必需的。将其按如下方式分解,查看实际缺少的内容:
XmlInfo=new XmlInfo();nfo.value=ToolMapGrid.Rows[i].Cells[j].value.ToString();nfo.row=i;nfo.column=j