2

为什么我得到“位置 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 个表,我想知道为什么。

4

1 回答 1

5

当您使用强类型DataSets时,您在设计器上声明表和数据适配器。DataTablesthen 已经是其中的一部分,DataSets因此您无需再次将它们添加到其中。

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

 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);
于 2012-12-27T18:40:06.963 回答