使用dataview将数据行导入datatable

时间:2012-07-10 10:37:32

标签: c# asp.net datatable

我想在数据视图中插入一行到数据表。我使用以下代码将dataview插入datatable,但它返回错误。

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 个答案:

答案 0 :(得分:2)

DataView包含DataRowViews,其中包含引用DataRow的属性Row

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

答案 1 :(得分:0)

这可能有帮助吗?

foreach (DataRow row in dv)
{
    dt.LoadDataRow(row.ItemArray);
}

答案 2 :(得分:0)

试试这个:

DST = dv.ToTable();

为DataView设置过滤器之后会出现这行代码。

答案 3 :(得分:0)

试试这个

DataView dview = new DataView();
DataTable dtable = new DataTable();
dtable = dview.Table.Clone();
foreach(DataRowView drowview in dview)
dtable.ImportRow(drowview.Row);