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

A DataViewcontainsDataRowViews并且 this 有一个Row引用DataRow.

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 回答