14

我正在向这样的数据集添加数据表:

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”的数据表,为什么会抛出错误?

更新:谢谢,这个问题已经解决了。请回答这个问题:

但是下一次,当数据表更新时,它会反映在数据集中吗?或者我们需要编写一些代码来使其反映?

4

4 回答 4

13

我假设您尚未设置TableNameDataTable 的属性,例如通过构造函数:

var tbl = new DataTable("dtImage");

如果您不提供名称,它将自动创建"Table1",下一个表将得到"Table2"等等。

然后解决方案是提供TableName然后检查Contains(nameOfTable)

澄清一下:ArgumentException如果该 DataTable 已经属于 DataSet(相同的引用),您将得到一个。DuplicateNameException如果 DataSet 中已经有一个同名的 DataTable(不区分大小写),您将得到一个。

http://msdn.microsoft.com/en-us/library/as4zy2kc.aspx

于 2012-08-29T13:16:15.723 回答
6

你必须将你想要的 tableName 设置为你的 dtimage,例如

dtImage.TableName="mydtimage";


if(!ds.Tables.Contains(dtImage.TableName))
        ds.Tables.Add(dtImage);

它将反映在数据集中,因为数据集是数据表 dtimage 的容器,并且您在 dtimage 上有参考

于 2012-08-29T13:15:09.620 回答
6

只需给 DataTable 起任何名称,例如:

DataTable dt = new DataTable();
dt = SecondDataTable.Copy();    
dt .TableName = "New Name";
DataSet.Tables.Add(dt );
于 2015-07-21T15:11:31.113 回答
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);
于 2019-10-07T06:14:48.477 回答