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);

さらに、デバッグすると、型指定されたデータセットに2つのテーブルがあることがわかりましたが、dgなぜだろうと思います。

4

1 に答える 1

5

強く型付けDataSetsされたを使用している場合は、デザイナでテーブルとデータアダプタを宣言します。DataTablesthenはすでにその一部であるためDataSets、それらを再度追加する必要はありません。

これが、データセットに1つではなく2つのテーブルが含まれている理由を説明しています。同じ理由で、例外が発生します。宣言的に追加されたものではなく、手動で作成されたテーブルに行を追加しました。

だが

 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 に答える