WPF Datagrid をセットアップし、linq-to-sql を介して Northwind データベース テーブルを表示し、TheDataGrid_RowEditEnding イベントを処理してデータベースを保存することができました。
ただし、CustomerID が変更されると、処理するデータベースからエラーが発生しますが、(1) Datagrid コントロールをロールバックするか、(2) データベース ビュー LINQ-to-SQL (以下でLINQを介して行う再取得には、何らかのキャッシュがあるようで、更新されません):
<Grid DockPanel.Dock="Bottom">
<toolkit:DataGrid x:Name="TheDataGrid"
AutoGenerateColumns="True"
RowEditEnding="TheDataGrid_RowEditEnding"/>
</Grid>
private void TheDataGrid_RowEditEnding(object sender, Microsoft.Windows.Controls.DataGridRowEditEndingEventArgs e)
{
try
{
_db.SubmitChanges();
}
catch (Exception ex)
{
RefreshData();
Message.Text = ex.Message;
}
}
public void RefreshData()
{
var customers = from c in _db.Customers
select c;
TheDataGrid.ItemsSource = customers;
}
答え:
ありがとうデニス、私はあなたの提案を使って私が求めていたものを手に入れました:
private void TheDataGrid_RowEditEnding(object sender, Microsoft.Windows.Controls.DataGridRowEditEndingEventArgs e)
{
try
{
_db.SubmitChanges();
}
catch (Exception ex)
{
Customer customer = e.Row.Item as Customer;
_db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, customer);
Message.Text = ex.Message;
}
}