0

厳密に型指定されたデータテーブルをいくつか含む DataSet があります。次のように、コピー操作を使用して、スキーマとデータの両方を新しい DataSet にコピーします。

DataSet dsNew = dsOld.Copy();

EmployeeDataTable dtEmpl = (EmployeeDataTable) dsNew.Tables["Employee"];
string sColName = dtEmpl.Columns[0].ColumnName; // this line correctly assigns 'EmployeeId' to sColName

EmployeeRow row = dtEmpl[0];
int id = row.EmployeeId;

最後の行は、タイプ 'System.ArgumentException' の例外をスローします!

4

2 に答える 2

0

代わりに名前で列にアクセスしてみてください。

このような:

int id = (int)row["EmployeeId"];`

それがうまくいかない場合は、dtEmpl.Columnsコレクションを見て、テーブルに正しい列があることを確認してください。

問題の原因は、データ セットをコピーしていて、オリジナルではなくコピーで作業していることが原因である可能性があります。その場合は、プロパティの代わりにインデクサーを使用して列にアクセスできます。

于 2013-06-26T14:03:29.593 に答える
0

例外処理でオブジェクトにアクセスするには、次のようにコードを記述します。

DataSet dsNew = dsOld.Copy();
try
{
... your code ...
}
catch(Exception Ex)
{
 ... here you can access dsNew ...
}
于 2013-06-26T13:46:59.417 に答える