私のdatagridViewでデータの変更を処理することにほとんど問題はありません。次のように、DataSource を datagridview にバインドします。
private void Form1_Load(object sender, EventArgs e)
{
var customersQuery = new ObservableCollection<Payment>(context.Payments);
customersQuery.CollectionChanged += new NotifyCollectionChangedEventHandler(customerQuery_Changed);
dataGridView1.DataSource = new BindingSource() { DataSource = customersQuery };
}
OrdersDataModelContainer context = new OrdersDataModelContainer();
そして、私は以下のような変更を処理しています:
private void customerQuery_Changed(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (Payment p in e.NewItems)
{
context.Payments.Add(p);
}
}
if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach (Payment p in e.OldItems)
{
context.Payments.Remove(p);
}
}
context.SaveChanges();
}
削除は機能しますが、追加はあまりうまくいきません。新しい行をクリックすると、追加アクションが呼び出されます。セルが空であるため、例外が発生します。挿入が終わって次の行に切り替えた後、 Add を呼び出すように動作を簡単に変更するにはどうすればよいですか? もう 1 つの問題は、既存のデータ行の変更です。それらは、新しいデータを挿入した後にのみデータベースで更新されます。
誰かが私に解決策やそれを探すべきポイントを教えてもらえますか?