У меня есть CollectionViewSource (cvs), который строго типизировал DataTable в качестве источника. Cvs.View установлен как источник данных DataGrid. Я хочу обновить, вставить и удалить данные из базы данных на основе изменений в DataGrid. Я успешно сделал обновление, и у меня есть идея для удаления, но для вставки у меня есть некоторые проблемы. Я пытался сделать это, обрабатывая событие CurrentChanging cvs.View, но состояние строки всегда отключено, и это должно быть добавлено. Вот мой код:
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;