DataAdapter.Update(DataSet) не сохраняет данные

Рейтинг: 1Ответов: 1Опубликовано: 29.10.2014

Есть маленькая табличка DataGrid, привязанная к базе данных через binding.
Если вызываю метод Update(DataSet) в обработчике события CellEditEnding или RowEdinEnding

private void CellEditEndingHandler(object sender, DataGridCellEditEndingEventArgs e)
{
    dataSetAdapter.Update(DataSet);
}

изменения сохраняются только в предпоследней строке. Изменения, внесенные в последнюю строку, не сохраняются.
Если этот метод вызываю в обработчике клика по кнопке

 private void Button_Click(object sender, RoutedEventArgs e)
 {
     dataSetAdapter.Update(DataSet);
 }

все работает.
Кнопка - не удобно. Хочется, чтобы сохранялось автоматически. Почему не работает?

Ответы

▲ 2Принят

Исходя из этой статьи, изменения попадают в модель, только когда строка теряет фокус.

Попробуйте вызвать CommitEdit:

bool inManualCommit = false;
void CellEditEndingHandler(object sender, DataGridCellEditEndingEventArgs e)
{
    if (inManualCommit) return;
    try
    {
        inManualCommit = true;
        DataGrid grid = (DataGrid)sender;
        grid.CommitEdit(DataGridEditingUnit.Row, true);
        dataSetAdapter.Update(DataSet);
    }
    finally
    {
        inManualCommit = false;
    }
}