C#复制DataRow出现“该行已经属于此表”错误的解决办法(转)
2010-02-21 22:18
316 查看
C#复制DataRow出现“该行已经属于此表”错误的解决办法
来源:http://div.cn/2008/12/cdatarow.html
DataTable 复制 DataRow 出现 "该行已经属于另一个表"错误的解决办法
DataTable dt = new DataTable(); dr=所要添加到dt的DataRow。 dt.Rows.Add(dr[); //出错提示为:该行已经属于另一个表
解决方法 dt.Rows.Add(dr.ItemArray);
来源 http://koffer.cnblogs.com/archive/2004/07/08/22324.html
最近项目太忙了,几乎没有时间来光顾这里了
![](http://www.cnblogs.com/Emoticons/red_smile.gif)
。
在项目中除了负责自己的模块实现外,还做了一个不太称职的TeamLeader。
由于负责的模块很多数据的操作,经常遇到这种错误,“此行已属于另一个表”的错误。
导致这个错误的语句如下:
dtPriceTable.Rows.InsertAt(aDataRow,i);
或者
dtPriceTable.Rows.Add(aDataRow);
我分析了一下原因,因为DataRow DataTable 都是传引用调用的。所以一个行在一个表中了,就不能再增加到另外一个表。
具体的改善策略有两种:
1、 把原始DataRow的每列依次赋值。如下:
DataRow tempRow = dtItemPrice.NewRow();
tempRow ["First"] = aDataRow ["First "]
tempRow ["second"] = aDataRow ["second "]
tempRow ["third"] = aDataRow ["third "]
tempRow ["forth"] = aDataRow ["forth "]
tempRow ["Fifth"] = aDataRow ["Fifth "]
……
dtPriceTable.Rows.Add(tempRow)
2、 有个同事提醒我为什么不循环DataTable的每个列呢?我想是哦,为什么不呢!
呵呵,这样子,不管Table有多少列,只需要3句话就搞定了
DataRow aDataRow = dtItemPrice.NewRow();
foreach(DataColumn aDataColumn in dtItemPrice.Columns)
{
aDataRow[aDataColumn.ColumnName] = drItemPrices[i][aDataColumn.ColumnName];
}
InsertConditionType(aDataRow,dtItemPrice);
测试就可以了。
后来看了看DataSet 和 DataTable 都有一个方法:Copy(),复制该 System.Data.DataTable 的结构和数据。
那么结合这个函数,无论是DataSet 和 DataTable还是DataRow 都有复制的方法了。
来源:http://div.cn/2008/12/cdatarow.html
DataTable 复制 DataRow 出现 "该行已经属于另一个表"错误的解决办法
DataTable dt = new DataTable(); dr=所要添加到dt的DataRow。 dt.Rows.Add(dr[); //出错提示为:该行已经属于另一个表
解决方法 dt.Rows.Add(dr.ItemArray);
来源 http://koffer.cnblogs.com/archive/2004/07/08/22324.html
最近项目太忙了,几乎没有时间来光顾这里了
![](http://www.cnblogs.com/Emoticons/red_smile.gif)
。
在项目中除了负责自己的模块实现外,还做了一个不太称职的TeamLeader。
由于负责的模块很多数据的操作,经常遇到这种错误,“此行已属于另一个表”的错误。
导致这个错误的语句如下:
dtPriceTable.Rows.InsertAt(aDataRow,i);
或者
dtPriceTable.Rows.Add(aDataRow);
我分析了一下原因,因为DataRow DataTable 都是传引用调用的。所以一个行在一个表中了,就不能再增加到另外一个表。
具体的改善策略有两种:
1、 把原始DataRow的每列依次赋值。如下:
DataRow tempRow = dtItemPrice.NewRow();
tempRow ["First"] = aDataRow ["First "]
tempRow ["second"] = aDataRow ["second "]
tempRow ["third"] = aDataRow ["third "]
tempRow ["forth"] = aDataRow ["forth "]
tempRow ["Fifth"] = aDataRow ["Fifth "]
……
dtPriceTable.Rows.Add(tempRow)
2、 有个同事提醒我为什么不循环DataTable的每个列呢?我想是哦,为什么不呢!
呵呵,这样子,不管Table有多少列,只需要3句话就搞定了
DataRow aDataRow = dtItemPrice.NewRow();
foreach(DataColumn aDataColumn in dtItemPrice.Columns)
{
aDataRow[aDataColumn.ColumnName] = drItemPrices[i][aDataColumn.ColumnName];
}
InsertConditionType(aDataRow,dtItemPrice);
测试就可以了。
后来看了看DataSet 和 DataTable 都有一个方法:Copy(),复制该 System.Data.DataTable 的结构和数据。
那么结合这个函数,无论是DataSet 和 DataTable还是DataRow 都有复制的方法了。
相关文章推荐
- DataTable 复制 DataRow 出现 “该行已经属于另一个表”错误的解决办法
- DataTable 复制 DataRow 出现 “该行已经属于另一个表”错误的解决办法【转】
- DataTable 复制 DataRow 出现 “该行已经属于另一个表”错误的解决办法
- DataTable 复制 DataRow 出现 “该行已经属于另一个表”错误的解决办法 [转帖]
- ASP.NET- 出现“该行已经属于另一个表”的错误解决办法
- 复制DataTable时出现"该行已经属于另一个表"异常的解决办法
- 在C#编程中要将一个表中的数据复制到另一个表中出现报错“该行已经属于另一个表”解决办法
- asp.net 该行已经属于另一个表错误的解决方法
- (C#) 该行已经属于另一个表 解决办法
- 解决---错误:该行已经属于另一个表
- DataTable添加行出现“该行已经属于另一个表”的错误!
- "该行已经属于另一个表"错误解决方法
- DataTable添加行出现“该行已经属于另一个表”的错误!
- 从一个TABLE中取一行放到另一个TABLE里报错: 该行已经属于另一个表。的解决办法
- Git使用中出现的错误以及解决办法积累
- server 2008 iis7安装WORDPRESS出现500错误的解决办法
- genymotion登陆出现unknown genymotion error;启动出现got no ip address, unable to load virtual engin错误的解决办法
- 安装Ms SQL Server 2005 开发版时出现性能计数器要求安装错误的解决办法
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法