, , , , , , , 2014, , , , , 2014, ,

Saturday, July 26, 2014

Row already belongs to another table

November 1, 2009 by · Leave a Comment 

When copying a row from one datatable to another you might get the error "this row already belongs to another table".
Typically you might write code like this:

string sConnString = ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString; 
DataSet ds = Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataset(sConnString,CommandType.Text, 
"select * from suppliers order by supplierid"); 
int nRowCount = 0;
DataTable dt = ds.Tables[0];DataTable dt2 = dt.Clone();
dt2.Clear();
foreach (DataRow row in dt.Rows)
{ 
dt2.Rows.Add(row);
nRowCount++;
if (nRowCount == 10)
{
DataRow rowNew = dt2.NewRow();
rowNew["supplierid"] = -12345;
dt2.Rows.Add(rowNew);
nRowCount = 0;
}
} 

The correct way is instead to "import" the row using ImportRow

string sConnString = ConfigurationManager.ConnectionStrings["NorthwindConn"].ConnectionString;
DataSet ds = Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataset(sConnString,CommandType.Text,
"select * from suppliers order by supplierid"); 
int nRowCount = 0; 
DataTable dt = ds.Tables[0]; 
DataTable dt2 = dt.Clone(); 
dt2.Clear(); 
foreach (DataRow row in dt.Rows) 
{ 
dt2.ImportRow(row); 
nRowCount++; 
if (nRowCount == 10) 
{ 
DataRow rowNew = dt2.NewRow(); 
rowNew["supplierid"] = -12345; 
dt2.Rows.Add(rowNew); 
nRowCount = 0; 
} 

}

Top Blogs

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

*