我想将数据行过滤器值插入datatable,但它返回以下错误“此行已经属于另一个表”。请帮我解决这个错误。
这是我的部分代码:
for (int j = 0; j < ListBox1.Items.Count; j++)
{
DataView DV = new DataView();
DV = DS1.DefaultView;
DV.RowFilter = "fldemployee='" + ListBox1.Items[j].Text + "' and fldassigndate = '04-07-2012'";
if (DV.Count > 0)
{
DataTable table = DV.ToTable("sp_getallattendancesetup");
DataRow row = table.Rows[0];
DT.Rows.Add(row);
}
}
GridView1.DataSource = DT;
GridView1.DataBind();
答案 0 :(得分:0)
您可以使用ImportRow
DT.Rows.ImportRow(row);
来自msdn的信息:调用NewRow使用添加一行到表 现有的表模式,但具有行的默认值,和 将DataRowState设置为Added。调用ImportRow会保留 现有DataRowState以及行中的其他值。如果 作为参数传递的DataRow处于分离状态,它是 被忽略了,没有抛出任何异常。
新行将添加到数据表的末尾。
如果新行违反约束,则不会将其添加到数据中 表
您可以使用DataTable.Rows.Find和获取新行的索引 DataTable.Rows.IndexOf。有关更多信息,请参阅DataRowCollection和Rows 信息。
参考here