1

データ ビューからデータ テーブルに行を挿入したいと考えています。次のコードを使用してデータビューをデータテーブルに挿入していますが、エラーが返されます。

Unable to cast object of type 'System.Data.DataRowView' to type 'System.Data.DataRow'.

これは私の部分的なコードです:

string empid= lbxempname.Items[i].Text.Substring(0,8);
DataView dv = new DataView();
dv = DS.DefaultView;
dv.RowFilter = "fldempid='" + empid + "'";
foreach (DataRow Dr in dv) {
  DST.ImportRow(Dr);
}
4

4 に答える 4

2

DataView含まれ、これにはを参照DataRowViewsするプロパティがあります。RowDataRow

foreach (DataRowView drv in dv)
{
    DataRow dr = drv.Row;
}

ただし、その行が別のDataTableに属している場合、その行をDataTableにインポートすることはできません。私はLINQ-To-DataSetあなたの行をフィルタリングし、そこからCopyToDataTable新しいものを作成するために使用しますDataTable

例えば:

DataTable tblFiltered = DS.AsEnumerable()
                          .Where(r => r.Field<string>("fldempid") == empid)
                          .CopyToDataTable();
于 2012-07-10T10:45:43.513 に答える
0

これを試して:

DST = dv.ToTable();

このコード行は、DataViewのフィルターを設定した後に表示されます。

于 2012-07-10T10:50:40.950 に答える
0

これは役立つかもしれませんか?

foreach (DataRow row in dv)
{
    dt.LoadDataRow(row.ItemArray);
}
于 2012-07-10T10:48:09.770 に答える
0

これを試して

DataView dview = new DataView();
DataTable dtable = new DataTable();
dtable = dview.Table.Clone();
foreach(DataRowView drowview in dview)
dtable.ImportRow(drowview.Row);
于 2012-07-10T11:41:52.823 に答える