無限ループをトリガーせずに、RowChanged イベントを使用して DataTable の行の列の値を (プログラムで) 更新するにはどうすればよいですか? (私は現在取得しています)
DataColumn.Expression プロパティを使用したくないことに注意してください。
たとえば、次の例では、再帰ループとスタック オーバーフロー エラーが発生します。
DataColumn dc = new DataColumn("OverallSize", typeof(long));
DT_Webfiles.Columns.Add(dc);
DT_Webfiles.RowChanged += new DataRowChangeEventHandler(DT_Row_Changed);
private static void DT_Row_Changed(object sender, DataRowChangeEventArgs e)
{
Console.Out.WriteLine("DT_Row_Changed - Size = " + e.Row["OverallSize"]);
e.Row["OverallSize"] = e.Row["OverallSize"] ?? 0;
e.Row["OverallSize"] = (long)e.Row["OverallSize"] + 1;
}
ありがとう
PS。実際、RowChanging イベント (RowChanged ではなく) を使用することは理にかなっています (つまり、いわば保存する前に値を変更します)。ハンドラーで:
e.Row["OverallSize"] = e.Row["OverallSize"] ?? 0;