DataGridViewの内容を更新したらDBも更新したいの答え
BindingSourceのイベントCurrentItemChangedを使用する。
CurrentItemChangedは、行の移動で発生する。
イベントが発生したら、BindingSource.CurrentからDataRowViewを取得する。
追加時にDataRowView.IsNewプロパティはTrueになるので、この場合は変更なし。
変更がない場合は、DataRowView.IsEditプロパティはTrueになるので、この場合も変更なし。
結論としてはDataRowViewのIsNew=false IsEdit=falseの時に更新処理を実行すればOK
. . bindingSource.CurrentItemChanged += new EventHandler(bindingSource_CurrentItemChanged); . . . private void bindingSource_CurrentItemChanged( object sender, EventArgs e) { DataRowView drv = (DataRowView)bindingSource.Current; if (drv.IsNew || drv.IsEdit) return; // DB更新処理 }
イメージとしてはこんな感じで