我要做的是编写一个separate函数,该函数位于我的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#的新手,但我需要帮助
答案 0 :(得分:2)
你快到了。
BindingSource bs = (BindingSource)dgv.DataSource;
DataSet ds = (DataSet)bs.DataSource;
DataTable dt = ds.Tables["Customers"]; // or Tables[0]
显然你绑定了DataSource = DataSet,DataMember =“Table Name”