如何将datagridview行添加到xml文件?
我是c#的初学者,我在Form
创建了一个dataGridView1
,我在其中添加了一些行和列( 不使用DataSet
和Datatable
)。 现在我需要将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,只是简单的插入。 在这种情况下,我的解决方案无助于在更复杂的情况下考虑它…