将 XML 文件内容添加到 C# 中的 dataGridView

本文关键字:中的 dataGridView 添加 XML 文件 | 更新日期: 2023-09-27 18:37:23

所以,这是我的问题。我正在创建我的第一个 C# 应用程序之一。它将是一种库存管理器。有一个 dataGridView,其中使用行和列显示数据。您可以添加、删除和更新 dataGridView 中的任何行。还可以将 dataGridView 中的内容另存为 XML 文件。我的问题是我不知道如何将该XML文件加载回dataGridView中,以便将来编辑网格?

dataGridView 行中的数据是使用数据表添加的。

下面是我的意思的一个例子:

dataTable.Rows.Add(txtID.Text, txtName.Text);
dataGridView1.DataSource = dataTable;

我只需要从 XML 中获取行的数据,因为列的名称是在表单加载时添加的。

下面是 XML 格式的外观:

<NewDataSet>
  <Table1>
    <ID>AN ID</ID>
    <Name>A NAME</Name>
  </Table1>
  <Table1>
    <ID>ANOTHER ID</ID>
    <Name>ANOTHER NAME</Name>
  </Table1>
  <Table1>
     <ID>YET ANOTHER ID AND SO ON</ID>
     <Name>YET ANOTHER NAME AND SO ON</Name>
  </Table1>
</NewDataSet>

我不知道这是否重要,但XML文件的名称是Content.xml它位于应用程序的启动位置。

不确定我是否有意义?

谢谢! :)

将 XML 文件内容添加到 C# 中的 dataGridView

你可以

通过序列化来做到这一点,比如

   NewDataSet obj = null;
        string DeviceResponse = "";
        DeviceResponse = "<NewDataSet>" +
                "    <Table1>" +
                "      <ID>AN ID</ID>  " +
                "      <Name>A NAME</Name> " +
                "    </Table1> " +
                "    <Table1> " +
                "      <ID>ANOTHER ID</ID> " +
                "      <Name>ANOTHER NAME</Name> " +
                "    </Table1>  " +
                "    <Table1>" +
                "       <ID>YET ANOTHER ID AND SO ON</ID> " +
                "       <Name>YET ANOTHER NAME AND SO ON</Name>" +
                "    </Table1> " +
                "  </NewDataSet> ";
        try
        {
            XmlSerializer serializer = new XmlSerializer(typeof(NewDataSet));
            using (TextReader reader = new StringReader(DeviceResponse))
            {
                obj = (NewDataSet)serializer.Deserialize(reader);
            }
        }
        catch (Exception ex)
        {
        }
        //if Successful
        string id = obj.Table1[0].ID;

并且您的新数据集类是

[XmlRoot(ElementName = "NewDataSet", Namespace = "")]
public class NewDataSet
{
   [XmlElement("Table1")]
    public List<Table1> Table1{get; set;}
}

public class Table1
{
    public string ID {get; set;}
    public string Name {get; set;}
}

不要忘记添加命名空间

using System.IO;
using System.Xml.Serialization;

你可以这样使用:

    private void button1_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        string xml = @"<NewDataSet>
                      <Table1>
                        <ID>AN ID</ID>
                        <Name>A NAME</Name>
                      </Table1>
                      <Table1>
                        <ID>ANOTHER ID</ID>
                        <Name>ANOTHER NAME</Name>
                      </Table1>
                      <Table1>
                         <ID>YET ANOTHER ID AND SO ON</ID>
                         <Name>YET ANOTHER NAME AND SO ON</Name>
                        <Bonus>Bonus Column</Bonus>
                      </Table1>
                    </NewDataSet>";
        using (DataSet ds = new DataSet())
        {
            using (MemoryStream mStrm = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
            {
                ds.ReadXml(mStrm);
                dataGridView1.DataSource = ds.Tables[0];
            }
        }
    }