Windows窗体:将空DataTable添加到数据集

时间:2015-07-07 21:15:14

标签: c# datagridview datatable

我目前正在使用C#中的Windows窗体应用程序,我有一个DataGridView,它有一个DataTable数据源。 DataGridView和DataTable是从存储在磁盘上的DataSet加载的。如果在DataGridView中进行了任何更改,则在单击保存按钮时会将其写入文件。但是,如果所有行都被删除,下次程序运行时我尝试在DataGridView中添加一行,它就不会写入文件,因为当我加载它时,DataTable不存在,因为所有行都被删除了

以下是代码:

DataSet ds = new DataSet();
DataTable dt160m = new DataTable("dt160m");
DataTable dt80m = new DataTable("dt80m");

ds.ReadXml(filename);

dt160m = ds.Tables["dt160m"];
dt80m = ds.Tables["dt80m"];

dataGridView160m.DataSource = dt160m;
dataGridView80m.DataSource = dt80m;

现在这很棒。例如,如果我从dataGridView80m中删除所有记录,那么当我重新打开它时,DataSet中就不再有名为dt80m的DataTable了。添加其他行不会创建数据表。

有什么建议可以解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

问题在于您将数据集作为XML文件写回磁盘。如果您的一个或两个DataTable为空,那么您将松开该表的架构。幸运的是,Dataset.WriteXml的重载需要另一个参数。

ds.WriteXml(filename, XmlWriteMode.WriteSchema);

这样,如果没有记录,磁盘上的结果文件也总是包含表的模式。

当然,当您阅读它时,您可以使用

获取表格的架构
ds.ReadXml(filename, XmlReadMove.ReadSchema);