データテーブル(ソース)があり、このデータテーブルのコピーが作成され(コピー)、このコピーでは、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
ソースデータテーブルで更新しないのですか?
ありがとう。