有一个数据表(source),并且创建了这个数据表的一个副本(copy),并且在这个副本中,DataGridView中的一些行被修改了。
修改结束后,一个方法是用复制数据表中的修改行更新源数据表。
DataTable source ;// it is population by database.
及其副本
DataTable copy = source.Copy(); // Here is the copy datatble.
方法是这样的:
public static void UpdateData(DataTable source, DataTable copy)
{
foreach (DataRow row in copy.Rows)
{
if (row.RowState == DataRowState.Modified)
{
var relRow = source.Select("Id = '" + row["Id"] + "'");
if (relRow.Any())
{
//relRow[0] = row; //This statement is not udating row in the source dataTable.
foreach (var column in copy.Columns)
{
relRow[0][column.ColumnName] = row[column.ColumnName];
}
}
}
else if (row.RowState == DataRowState.Added)
{
//Performing some operations to for checking additional values. modiging 'row' with some relative data, and adding to source.
source.Rows.Add(row.ItemArray);
}
}
return source;
}
当将行对象分配给 datarows 数组的第一个元素 relRow[0] = row
时,它不会更新源数据表,而是在 relRow[0] 中调试时显示修改后的数据。
逐列分配反映数据表中的更改。
所以,问题是:为什么relRow[0] = row
不在源数据表中更新?
谢谢。