以编程方式将数据添加到类型化数据集

时间:2012-12-27 18:36:57

标签: c# asp.net dataset strongly-typed-dataset

为什么我得到“0号位没有行”异常:

DSGeneral dg = new DSGeneral();

// I create 1 table
DSGeneral.GeneralDataTable t = new DSGeneral.GeneralDataTable();
dg.Tables.Add(t);

// The 1st row
DSGeneral.GeneralRow r = t.NewGeneralRow();
r.Code = "code";
r.Value = "7";
t.Rows.Add(r);

// The 2nd row
DSGeneral.GeneralRow r2 = t.NewGeneralRow();
r2.Code = "exp";
r2.Value = "5";
t.Rows.Add(r2);

它抛出:

int numClave = Convert.ToInt16(dg.General[0].Value);

此外,调试我可以看到我的类型化数据集dg有2个表,我想知道为什么。

1 个答案:

答案 0 :(得分:5)

当您使用strongly typed DataSets时,您在设计器上声明表和数据适配器。 DataTables已经是DataSets的一部分,因此您无需再次添加它们。{1}}

这解释了为什么数据集包含两个表而不是一个表。因为同样的原因你得到了例外。您已将行添加到手动创建的表中,而不是以声明方式添加。

但是

 dg.General[0].Rows[0].Value

访问仍为空的自动生成的DataTable

所以你只需要使用可用的表:

DSGeneral dg = new DSGeneral();
DSGeneral.GeneralRow r = dg.General.NewGeneralRow();
r.Code = "code";
r.Value = "7";
dg.General.AddGeneralRow(r);
相关问题