您的位置:首页 > 其它

DataTable.DataRow的复制(解决:此行已属于另一个表)

2014-06-06 23:36 239 查看
原地址:/article/10332308.html

经常遇到这种错误,“此行已属于另一个表”的错误,导致这个错误的语句如下:


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的每列。如下:


DataRow aDataRow = dtItemPrice.NewRow();




foreach(DataColumn aDataColumn in dtItemPrice.Columns)


{


aDataRow[aDataColumn.ColumnName] = drItemPrices[i][aDataColumn.ColumnName];


}




InsertConditionType(aDataRow,dtItemPrice);

测试就可以了。

3、在表结构相同的情况下,如下面所示:


DataRow aDataRow = dtItemPrice.NewRow();


aDataRow.ItemArray = drItemPrices[i].ItemArray;


dtItemPrice.Rows.Add(aDataRow);

4、使用importRow的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: