我正在向这样的数据集添加数据表:
DataTable dtImage = new DataTable();
//some updates in the Datatable
ds.Tables.Add(dtImage);
但是下一次,当数据表更新时,它会反映在数据集中吗?或者我们需要编写一些代码来反映它?
此外,我正在检查数据集是否已在数据集中使用数据表:
if(!ds.Tables.Contains("dtImage"))
ds.Tables.Add(dtImage);
在第一次迭代中,ds.Tables.Contains("dtImage")
为false,因此,ds.Tables.Add(dtImage)
将表添加到数据集中。但是在第二次迭代中,ds.Tables.Contains("dtImage")
再次为假,但ds.Tables.Add(dtImage)
会抛出错误:
数据表已属于此数据集。
如果数据集不包含名为“dtImage”的数据表,为什么会抛出错误?
更新:谢谢,这个问题已经解决了。请回答:
但是下一次,当数据表更新时,它会是什么 反映在数据集中?或者我们需要编写一些代码来实现它 反射?
答案 0 :(得分:12)
我假设你没有设置DataTable的TableName
属性,例如通过构造函数:
var tbl = new DataTable("dtImage");
如果您未提供名称,则会自动使用"Table1"
创建名称,下一个表格将显示"Table2"
,依此类推。
然后解决方案是提供TableName
,然后检查Contains(nameOfTable)
。
澄清:如果DataTable已经属于DataSet(相同的引用),您将获得ArgumentException
。如果DataSet中的DataTable已经具有相同的名称(不区分大小写),则会得到DuplicateNameException
。
答案 1 :(得分:6)
你必须将你想要的tableName设置为你的dtimage,例如
dtImage.TableName="mydtimage";
if(!ds.Tables.Contains(dtImage.TableName))
ds.Tables.Add(dtImage);
它将反映在数据集中,因为dataset是数据表dtimage的容器 并且你有关于你的dtimage的参考
答案 2 :(得分:4)
只需为DataTable提供任何名称,如:
DataTable dt = new DataTable();
dt = SecondDataTable.Copy();
dt .TableName = "New Name";
DataSet.Tables.Add(dt );
答案 3 :(得分:0)
DataSet ds = new DataSet();
DataTable activity = DTsetgvActivity.Copy();
activity.TableName = "activity";
ds.Tables.Add(activity);
DataTable Honer = DTsetgvHoner.Copy();
Honer.TableName = "Honer";
ds.Tables.Add(Honer);
DataTable Property = DTsetgvProperty.Copy();
Property.TableName = "Property";
ds.Tables.Add(Property);
DataTable Income = DTsetgvIncome.Copy();
Income.TableName = "Income";
ds.Tables.Add(Income);
DataTable Dependant = DTsetgvDependant.Copy();
Dependant.TableName = "Dependant";
ds.Tables.Add(Dependant);
DataTable Insurance = DTsetgvInsurance.Copy();
Insurance.TableName = "Insurance";
ds.Tables.Add(Insurance);
DataTable Sacrifice = DTsetgvSacrifice.Copy();
Sacrifice.TableName = "Sacrifice";
ds.Tables.Add(Sacrifice);
DataTable Request = DTsetgvRequest.Copy();
Request.TableName = "Request";
ds.Tables.Add(Request);
DataTable Branchs = DTsetgvBranchs.Copy();
Branchs.TableName = "Branchs";
ds.Tables.Add(Branchs);