1

我想做的是在我的 Windows 窗体应用程序的业务逻辑中编写一个单独的函数。此函数接收 xml 文件路径和 datagridview 对象作为参数。

这应该有效:

DataTable dt = new DataTable();
dt = (DataTable)datagridview.DataSource;
DataSet ds = new DataSet(); 
ds.Tables.Add(dt);
ds.WriteXml(xml_file, System.Data.XmlWriteMode.IgnoreSchema);

但是我每次都遇到错误:

dt = (DataTable)datagridview.DataSource;

[System.InvalidCastException] = {"Unable to cast object of type 'System.Windows.Forms.BindingSource' to type 'System.Data.DataTable'."}

所以我在另一个博客中被建议尝试这个:

BindingSource bs = (BindingSource)dgv.DataSource;
dt = (DataTable)bs.DataSource;

但我明白了

[System.InvalidCastException] = {"Unable to cast object of type 'ExportDataTestApp.NorthwindDataSet' to type 'System.Data.DataTable'."}

我已经搜索并尝试了所有我不会感到惊讶的事情,因为我是 C# 新手,但我需要帮助

4

1 回答 1

2

您快到了。

BindingSource bs = (BindingSource)dgv.DataSource;
DataSet ds = (DataSet)bs.DataSource;
DataTable dt = ds.Tables["Customers"];  // or Tables[0]

显然你正在绑定 DataSourse=myDataSet, DataMember="Tablename"

于 2012-04-19T10:17:01.863 回答