如何将datagridview行添加到xml文件?

我是c#的初学者,我在Form创建了一个dataGridView1 ,我在其中添加了一些行和列( 不使用DataSetDatatable )。 现在我需要将dataGridView1的数据发送到xml文件。 每当我点击该按钮时,xml文件都应该更新 。 我需要在不使用Datatable (或表)的情况下执行此操作。 我试过下面的代码( 不工作

OnButtonClick

  XmlTextWriter newXml = new XmlTextWriter("d:/newXML.xml", Encoding.UTF8); DataSet ds = new DataSet(dataGridView1.Rows.ToString()); /* May be I am missing something here */ ds.WriteXml(newXml); 

xml文件已成功创建,但在其中显示

如果我添加BindingSource bs = (BindingSource)dataGridView1.DataSource;DataSet之前,它显示错误“对象引用未设置为对象的实例”。

注意:如果xml文件不是他们的,那么它应该创建一个。

提前致谢。

您可以实例化DataTable并从dataGridView1控件填充它:

  DataTable table = new DataTable("Customers"); // copy the correct structure from datagridview to the table foreach (DataGridViewColumn column in dataGridView1.Columns) { table.Columns.Add(column.Name, typeof(string)); } // populate the datatable from datagridview for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++) { table.Rows.Add(); for (int columnIndex = 0; columnIndex < dataGridView1.Columns.Count; columnIndex++) { table.Rows[rowIndex][columnIndex] = dataGridView1[rowIndex, columnIndex].Value; } } 

然后继续使用其余的代码:

  DataSet ds = new DataSet(); ds.Tables.Add(table); ds.WriteXml("d:/newXML.xml", System.Data.XmlWriteMode.IgnoreSchema); 

欢迎来到C#世界!

解决问题的良好开端应该是使用序列化 ,当您需要将对象保存到XML文件时,它非常方便。

我不知道你如何存储填充DataGrid的对象,但如果可以,你应该使它们可序列化,添加一些方法,如Load(),Save()等。

阅读本文以获取更多信息: MSDN – 序列化

你会发现很多关于如何做到这一点的信息,当你开始时实施起来有点苛刻,但是在路上可以节省你很多时间!

希望它会有所帮助。

编辑1:

刚刚看到你的编辑,似乎你没有使用Objects,只是简单的插入。 在这种情况下,我的解决方案无助于在更复杂的情况下考虑它…