WPF DataGrid で変更をデータベースに保存するにはどうすればよいですか?
DataGrid コントロールを DataTable オブジェクトにデータ バインドし、そのテーブルにいくつかの基本情報を取得する非常に単純な SELECT クエリを設定しました。データはコントロールにうまく表示されます。
しかし、コントロールを使用してデータを編集すると、変更が DB にプッシュされません。
誰かが私が欠けているものを知っていますか?
WPF DataGrid で変更をデータベースに保存するにはどうすればよいですか?
DataGrid コントロールを DataTable オブジェクトにデータ バインドし、そのテーブルにいくつかの基本情報を取得する非常に単純な SELECT クエリを設定しました。データはコントロールにうまく表示されます。
しかし、コントロールを使用してデータを編集すると、変更が DB にプッシュされません。
誰かが私が欠けているものを知っていますか?
更新の実行
ユーザーが DataGrid 内の Customers データを編集すると、それに応じてバインドされたメモリ内 DataTable が更新されます。ただし、これらの更新はデータベースに自動的に書き戻されません。アプリケーションの要件に応じて、いつ DataTable への変更をデータベースに書き戻すかを決定するのは、開発者の責任です。たとえば、場合によっては、[送信] ボタンを使用して変更のバッチを送信したり、ユーザーが各行の編集をコミットするときにデータベースを更新したりすることができます。これらをサポートするために、DataTable に含まれる行には、データベースと同期する必要がある変更が含まれているかどうかを示す RowState プロパティがあります。同期プロセスは、TableAdapter の Update メソッドを使用して簡単に実現できます。url: WPF DataGrid の例
次の例は、ユーザーが行を変更するたびに DataTable 状態の変更がデータベースに書き込まれるように、RowChanged および RowDeleted イベントを処理する方法を示しています。
public CustomerDataProvider()
{
NorthwindDataSet dataset = new NorthwindDataSet();
adapter = new CustomersTableAdapter();
adapter.Fill(dataset.Customers);
dataset.Customers.CustomersRowChanged +=
new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified);
dataset.Customers.CustomersRowDeleted +=
new NorthwindDataSet.CustomersRowChangeEventHandler(CustomersRowModified);
}
void CustomersRowModified(object sender, NorthwindDataSet.CustomersRowChangeEvent e)
{
adapter.Update(dataset.Customers);
}