I have a datatable which contains 10 rows. I now need to insert 11th row at the position specified by some conditions.
I have tried the InsertAt method but that gives the error of "this row already belongs to another table".
I cannot use ImportRow method as that simply import the rows into datatable and inserts the row at the end of the existing rows.
What should i do? Kindly help!
Thanks
UPDATED CODE
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();
}
Try this. I think the error you are getting is bcz you are not creating NewRow.
A DataTable is like an SQL table. It doesn't really have the concept of physical positions. You have to give the row a value that will sort the way you want it to when retrieving a set of rows.
[Edit] The documentation is a bit nebulous:
The location specified by InsertAt is reflected by the order of rows in the DataRowCollection only. If more than one row is returned in a DataRow array, the inserted row may not be returned in the location specified by InsertAt.
For more info, check
DataRowCollection.InsertAt Method