C#:DataGridView中XML的数据;如何保存已编辑的行?

时间:2017-06-13 08:28:46

标签: xml datagridview save

我有一个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等以及它们如何相互属性感到困惑。有人可以帮我解决一下吗?

问候并谢谢你!

1 个答案:

答案 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());
  }
}

希望这有帮助。