0

我想将数据行过滤器值插入数据表,但它返回以下错误“该行已经属于另一个表。” 请帮我解决这个错误..

这是我的部分代码:

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

1 回答 1

0

您可以使用ImportRow

DT.Rows.ImportRow(row);

来自 msdn 的信息:调用 NewRow 会使用现有表架构向表中添加一行,但使用该行的默认值,并将 DataRowState 设置为已添加。调用 ImportRow 会保留现有的 DataRowState 以及行中的其他值。如果作为参数传递的 DataRow 处于分离状态,则将其忽略,并且不会引发异常。

新行将添加到数据表的末尾。

如果新行违反约束,则不会将其添加到数据表中。

您可以使用 DataTable.Rows.Find 和 DataTable.Rows.IndexOf 来获取新行的索引。有关详细信息,请参阅 DataRowCollection 和行。

参考这里

于 2012-04-16T09:49:59.337 回答