我有一个WinForms应用程序,使用强类型自定义DataSet来保存处理数据。它从数据库中获取数据并填充到DataSet中。
我有一个用户控件,可以将任何自定义dataset中的内容显示在数据网格中,这用于测试和调试。为了使控件可重用,我将自定义dataset视为普通的System.Data.DataSet。
我扩展了该控件,使其能够保存dataset到XML文件中,并加载以前保存的XML文件。
现在我想做的是将已加载的数据文件(被视为标准DataSet)转换回自定义Dataset。这不应该很困难,但我得到了以下System.InvalidCastException消息:
无法将类型为“System.Data.DataSet”的对象强制转换为类型“CostingDataSet”。
以下是问题代码示例(最后一行会生成异常):
此外,SSarma提供的代码也可以运行。
我有一个用户控件,可以将任何自定义dataset中的内容显示在数据网格中,这用于测试和调试。为了使控件可重用,我将自定义dataset视为普通的System.Data.DataSet。
我扩展了该控件,使其能够保存dataset到XML文件中,并加载以前保存的XML文件。
现在我想做的是将已加载的数据文件(被视为标准DataSet)转换回自定义Dataset。这不应该很困难,但我得到了以下System.InvalidCastException消息:
无法将类型为“System.Data.DataSet”的对象强制转换为类型“CostingDataSet”。
以下是问题代码示例(最后一行会生成异常):
DataSet selected = debugDisplay.SelectedDataSet;
CostingDataSet tempDS = new CostingDataSet();
tempDS = (CostingDataSet)selected.Copy();
有人能帮我指点一下如何解决这个问题吗?
编辑:根据nEM的评论,我实施了这个措施,然后一切都很好。
foreach (System.Data.DataTable basicDT in selected.Tables)
{
DataTable dt = tempDS.Tables[basicDT.TableName];
dt = basicDT.Copy();
}
此外,SSarma提供的代码也可以运行。