【问题标题】:This row already belongs to another table此行已经属于另一个表
【发布时间】:2012-03-11 03:12:42
【问题描述】:

我的 asp.net 网站有问题,我正在尝试将数据行从一个数据表复制到另一个数据表,但每次我尝试这样做时都会出现错误:

This row already belongs to another table.

【问题讨论】:

    标签: asp.net .net vb.net datatable


    【解决方案1】:

    如错误所述,DataRow 实例与其拥有的DataTable 绑定,不能添加到另一个表。

    改为使用ImportRow() method 来制作行的实际副本。

    【讨论】:

    • 好吧,微软……你意识到情况就是这样,为什么不呢,你在这种情况下为我们运行 ImportRow,而不是抛出一个自鸣得意的异常? 叹息
    • @SeanKendle:不; add 有时会在没有任何指示的情况下复制该行是一个非常糟糕的主意。
    • 是否存在说“添加行”不会意味着复制的情况?或者,如果它已经是另一个表的成员,您甚至可以在哪里使用添加行?
    • @SeanKendle:table.NewRow()。或者,删除,然后重新添加。
    • 好的,所以,在我看来,我的观点是正确的。如果您说“将此现有行(另一个表的成员)添加到另一个表中”,该语言应该足够聪明,可以知道您的意思是“制作现有行的副本,然后添加副本到这张桌子上。”只是我的观点。有时 VB.net 不是很直观。
    【解决方案2】:

    举例

    您需要首先使用来自dr 的值创建一个新的Row。一个DataRow 只能属于一个DataTable

    你也可以使用 Add 来接受一个值数组:

    myTable.Rows.Add(dr.ItemArray)
    

    或者可能更好:

    myTable.ImportRow(dr);
    

    Link

    【讨论】:

      猜你喜欢
      • 2013-12-21
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多