我有一个包含10行的数据表。我现在需要在某些条件指定的位置插入第11行。
我已经尝试了InsertAt方法,但是它给出了“此行已经属于另一个表”的错误。
我不能使用ImportRow方法,因为它只是将行导入datatable并将行插入到现有行的末尾。
我该怎么办?
谢谢
更新代码
int iCount = 0;
foreach (DataRow dr in dtWithBundle.Rows)
{
DataRow drClone = dtOppClone.NewRow();
drClone.ItemArray = dr.ItemArray;
dtOpps.Rows.InsertAt(drClone, iIndex + iCount);
//dtOpps.ImportRow(drClone);
//dtOpps.Rows.Add(drClone.ItemArray); // Commented on Aug-4 2011 1700HRS
iCount++;
dtOpps.AcceptChanges();
}
3条答案
按热度按时间xmq68pz91#
尝试这个。我认为你得到的错误是bcz你没有创建NewRow。
dfddblmv2#
DataTable类似于SQL表。它实际上没有物理位置的概念。您必须为行指定一个值,以便在检索一组行时按您希望的方式进行排序。
[编辑]文档有点模糊:
InsertAt所指定的位置只会由DataRowCollection中的数据列顺序所反映。如果DataRow数组中传回一个以上的数据列,则插入的数据列可能不会传回InsertAt所指定的位置。
有关详细信息,请查看
DataRowCollection.InsertAt Method
0lvr5msh3#
下面的示例说明如何在不同位置插入多行,其中位置可能会发生变化,从而在 DataTable 中计算行号。
注意r和rNo的使用: