如何获取WPF DataGrid以将更改保存回数据库?
我已将DataGrid控件数据绑定到DataTable对象,并使用非常简单的SELECT查询填充该表,该查询检索一些基本信息。数据在控件中显示得很好。
但是当我使用控件编辑数据时,更改不会被推回到数据库。
有谁知道我错过了什么?
答案 0 :(得分:16)
执行更新
当用户在DataGrid中编辑Customers数据时,绑定的内存中DataTable会相应更新。但是,这些更新不会自动写回数据库。开发人员可以根据应用程序的要求决定何时将DataTable的更改写回数据库。例如,在某些情况下,您可能希望通过“提交”按钮提交一批更改,或者您可能希望在用户提交每行编辑时更新数据库。为了支持这些,DataTable包含的行具有RowState属性,该属性指示它们是否包含应与数据库同步的更改。通过TableAdapter的Update方法可以轻松实现同步过程。 网址: WPF DataGrid examples
以下示例显示如何处理RowChanged和RowDeleted事件,以便每次用户更改行时将DataTable状态的更改写入数据库:
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);
}