此行已经属于另一个表
Posted
技术标签:
【中文标题】此行已经属于另一个表【英文标题】:This row already belongs to another table 【发布时间】:2012-03-11 03:12:42 【问题描述】:我的 asp.net 网站有问题,我正在尝试将数据行从一个数据表复制到另一个数据表,但每次我尝试这样做时都会出现错误:
This row already belongs to another table.
【问题讨论】:
【参考方案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
【讨论】:
以上是关于此行已经属于另一个表的主要内容,如果未能解决你的问题,请参考以下文章
System.ArgumentException: 该行已经属于另一个表。看下面代码