How to insert row at any desired position in datatable?

48,563

Try this. I think the error you are getting is bcz you are not creating NewRow.

    DataTable dt = new DataTable();
    dt.Columns.Add("Name", typeof(string));

    DataRow dr;
    dr = dt.NewRow();
    dr[0] = "A";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = "C";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr[0] = "B";
    dt.Rows.InsertAt(dr,1);

    foreach (DataRow d in dt.Rows)
    {
        Console.WriteLine(d[0].ToString());

    }

    Console.Read();
Share:
48,563
xorpower
Author by

xorpower

Reached 500 Repo on May 22'11 Reached 600 Repo on Jul 29'11 Reached 700 Repo on Aug 10'11 Reached 800 Repo on Sep 09'11 Reached 900 Repo on Oct 13'11 Reached (& crossed) 1000 Repo during Mar 14-19'12 Reached 1300 Repo on May 8 2013

Updated on June 23, 2020

Comments

  • xorpower
    xorpower about 4 years

    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();
            }