dmr*_*dmr 4 c# asp.net datatable exception dataset
我无法弄清楚为什么我得到一个"DataTable已经属于另一个DataSet"的例外.
这是我的代码:
DataSet AlertSet = new DataSet();
DataTable generalAlertData = new DataTable("GeneralAlertData");
generalAlertData = //function that returns datatable
//throws exception
AlertSet.Tables.Add(generalAlertData)
Run Code Online (Sandbox Code Playgroud)
何时创建另一个数据集以及何时添加generalAlertData数据表?
我尝试使用稍微不同的语法来创建和添加表并得到相同的错误:
DataSet AlertSet = new DataSet();
DataTable generalAlertData = //function that returns datatable
//throws exception
AlertSet .Tables.Add(generalAlertData);
Run Code Online (Sandbox Code Playgroud)
这取决于您检索数据表的功能.
如果该函数使用a DataAdapter并填充数据集,那么您DataSet将自动分配表的属性,并且需要在分配不同的DataSet之前将其删除
您可以尝试这样删除原始DataSet并使用您自己的DataSet
DataTable generalAlertData = GetTable();
DataSet u = generalAlertData.DataSet;
u.Tables.Remove(generalAlertData.TableName);
AlertSet.Tables.Add(generalAlertData);
Run Code Online (Sandbox Code Playgroud)
所以,如果你的假设GetTable以这种方式运作
public DataTable GetTable()
{
...
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds.Tables[0];
}
Run Code Online (Sandbox Code Playgroud)
然后将DataSet分配给返回的数据表.
相反,此代码不会为DataSet属性分配任何内容
public DataTable GetTable()
{
...
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25056 次 |
| 最近记录: |