如何将 datagridview 行添加到 xml 文件?
Posted
技术标签:
【中文标题】如何将 datagridview 行添加到 xml 文件?【英文标题】:How to add datagridview rows to an xml file? 【发布时间】:2012-09-26 10:12:36 【问题描述】:我是 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文件创建成功,但里面显示<System.Windows.Forms.DataGridViewRowCollection />
。
如果我在DataSet
之前添加BindingSource bs = (BindingSource)dataGridView1.DataSource;
,则会显示错误“对象引用未设置为对象的实例。”
注意:如果xml文件不是他们的那么它应该创建一个。
提前致谢。
【问题讨论】:
Whats "Not working ?" 你有什么错误吗,也放一个调试点,看看你的表中是否有任何数据 您可以使用DataSet.WriteXML,而不是将数据表写入 XML 文件 您似乎从某个地方复制了部分代码,却不了解它在做什么。 @Mr_Green 但是你怎么知道这些行会达到你的目的呢? 我删除了我的 cmets,因为我非常编辑了我的问题。 【参考方案1】:您可以实例化 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);
【讨论】:
显示错误:Index was out of range. Must be non-negative and less than the size of the collection.
在不使用 DataTable 的情况下有没有办法做到这一点?【参考方案2】:
欢迎来到 C# 世界!
使用序列化是解决问题的良好开端,当您需要将对象保存到 XML 文件中时,它真的很方便。
我不知道您如何存储填充 DataGrid 的对象,但如果可以,您应该使它们可序列化,添加一些方法,如 Load()、Save() 等。
阅读本文了解更多信息:MSDN - Serialization
你会发现很多关于如何做到这一点的信息,当你开始时实施起来有点苛刻,但可以为你节省大量的时间!
希望它会有所帮助。
编辑 1:
刚刚看到您的编辑,似乎您没有使用对象,只是简单的插入。在那种情况下,我的解决方案将不得不考虑更复杂的情况......
【讨论】:
以上是关于如何将 datagridview 行添加到 xml 文件?的主要内容,如果未能解决你的问题,请参考以下文章
不能向没有列的 DataGridView 控件添加行.必须首先添加列.
C#如何保留datagridview中的原来数据并将新的数据添加到datagridview中?
如何实现c# winform DataGridView添加一行,添加数据后,保存到数据库?
C#如何将DataGirdView1中勾选中checkbox多行 添加到另一个DatagridView2中急用要用代码。