ソースとしてDataTableを強く型付けしたCollectionViewSource(cvs)があります。Cvs.ViewはDataGridのItemsSourceとして設定されます。DataGridの変更に基づいて、データベースのデータを更新、挿入、および削除したい。更新は正常に完了し、削除することも考えていますが、挿入についてはいくつか問題があります。cvs.ViewのCurrentChangingイベントを処理してこれを実行しようとしましたが、行の状態は常に切り離されているため、追加する必要があります。これが私のコードです:
private void View_CurrentChanging(object sender, CurrentChangingEventArgs e)
{
if (cvs.View.CurrentItem != null)
{
var dataRow = ((cvs.View.CurrentItem as DataRowView).Row) as MyDataSet.MyTableRow;
if (dataRow.HasChanges())
{
//do update - works
}
dataRow.EndEdit(); // without this line RowState is Unchanged when it should be Added
if (dataRow.RowState == DataRowState.Added)
{
//do insert - never goes here, RowState is Detached when it should be Added
}
}
}
これは正しい方法ですか?私は何かが足りないのですか?前もって感謝します。
編集:DataGridバインディング:
dataGrid1.ItemsSource = cvs.View;