public void ImportRow(DataRow row)
{
long logScopeId = DataCommonEventSource.Log.EnterScope("<ds.DataTable.ImportRow|API> {0}", ObjectID);
try
{
int oldRecord = -1, newRecord = -1;
if (row == null)
{
return;
}
if (row._oldRecord != -1)
{
oldRecord = _recordManager.ImportRecord(row.Table, row._oldRecord);
}
if (row._newRecord != -1)
{ // row not deleted
if (row.RowState != DataRowState.Unchanged)
{ // not unchanged, it means Added or modified
newRecord = _recordManager.ImportRecord(row.Table, row._newRecord);
}
else
{
newRecord = oldRecord;
}
}
if (oldRecord != -1 || newRecord != -1)
{
DataRow targetRow = 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]));
}
}
}
}
finally
{
DataCommonEventSource.Log.ExitScope(logScopeId);
}
}