zoukankan      html  css  js  c++  java
  • DataSet DataTable.DataRow的复制添加值(解决:此行已属于另一个表)

    在做项目过程中遇到了“此行已属于另一个表”的错误,上网找了找资料,总结了以下有三种方法可以解决:

    导致这个错误的语句如下:
    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);

  • 相关阅读:
    [日常训练]大灾难
    [cf235D]Graph Game
    [日常训练]选课
    [日常训练]挂科
    [学习笔记]概率&期望
    [日常训练]yayamao的神题
    [学习笔记]原根
    LOJ#2132. 「NOI2015」荷马史诗
    LOJ#2131. 「NOI2015」寿司晚宴
    LOJ#2129. 「NOI2015」程序自动分析
  • 原文地址:https://www.cnblogs.com/AeroJin/p/2144318.html
Copyright © 2011-2022 走看看