为什么我得到“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个表,我想知道为什么。
答案 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);