internal void CopyRow(DataTable table, DataRow row)
{
int oldRecord = -1, newRecord = -1;
if (row == null)
{
return;
}
if (row._oldRecord != -1)
{
oldRecord = table._recordManager.ImportRecord(row.Table, row._oldRecord);
}
if (row._newRecord != -1)
{
if (row._newRecord != row._oldRecord)
{
newRecord = table._recordManager.ImportRecord(row.Table, row._newRecord);
}
else
{
newRecord = oldRecord;
}
}
DataRow targetRow = table.AddRecords(oldRecord, newRecord);
if (row.HasErrors)
{
targetRow.RowError = row.RowError;
DataColumn[] cols = row.GetColumnsInError();
for (int i = 0; i < cols.Length; i++)
{
DataColumn col = targetRow.Table.Columns[cols[i].ColumnName];
targetRow.SetColumnError(col, row.GetColumnError(cols[i]));
}
}
}