将 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它位于应用程序的启动位置。
我不确定我是否有意义?
谢谢! :)
你可以
通过序列化来做到这一点,比如
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];
}
}
}