我想在数据视图中插入一行到数据表。我使用以下代码将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);
}
答案 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);