我有一个XML文件,其中包含来自客户的简单联系人数据。
<ArrayOfCustomer>
<customer>
<firstname>Joe</firstname>
<lastname>Glenn</lastname>
<fullname>Glenn, Joe</fullname>
<email>joe.glenn@something.com</email>
<substitude>mary.poppins@something.com</email>
<language>EN</language>
</customer>
<customer>
<firstname>Lionel</firstname>
<lastname>Messi</lastname>
<fullname>Messi, Lionel</fullname>
<email>lionel.messi@something.com</email>
<substitude>ernesto.valverde@something.com</substitude>
<language>ES</language>
<customer>
<customer>...</customer>
</ArrayOfCustomer>
此数据显示在Windows窗体元素内的DataGridView中。这是通过反序列化和BindingSource完成的。 到目前为止没问题。
现在我希望,只要编辑DataGridView中的数据(例如,添加了客户或编辑了电子邮件地址),这些更改就会再次保存到XML文件中。
当然我可以添加一个方法,在所有更改中调用。但我觉得,这可以更轻松地完成。你能告诉我,怎么做?
另外,我对所有术语DataBinding,DataSource,BindingSource,DataSet等以及它们如何相互属性感到困惑。有人可以帮我解决一下吗?
问候并谢谢你!
答案 0 :(得分:0)
在不知道如何将XML文件读入DataGridView
的情况下,我假设您正在使用XmlReader
并将文件读入DataSet
,而DataGridView
依次为DataTable
使用此DataSet
中的第一个DataSource
作为DataTable
。如果是这种情况,那么当用户在网格中编辑或添加新信息时,这些更改将反映在DataTable
中。
因此,如果您拥有DataGridView
中的DataTable
且此DataSet
属于DataSet
,则可以使用WriteXml
。{ {1}}方法如下。这会将DataSet
写入格式正确的XML文件。
读取xml文件并设置dataGridView
DataSource
DataSet ds = new DataSet();
private void btn_ReadXML_Click(object sender, EventArgs e) {
try {
using (XmlReader xmlFileToRead = XmlReader.Create("Customers.xml", new XmlReaderSettings())) {
ds = new DataSet();
ds.ReadXml(xmlFileToRead);
dataGridView1.DataSource = ds.Tables[0];
xmlFileToRead.Close();
}
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}
然后编写xml文件的方法。
private void btn_SaveXML_Click(object sender, EventArgs e) {
try {
using (XmlWriter xmlFileToWrite = XmlWriter.Create("Customers.xml", new XmlWriterSettings())) {
ds.WriteXml(xmlFileToWrite);
xmlFileToWrite.Close();
}
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}
希望这有帮助。