Отмена всех изменений с момента последнего вызова EndEdit BindingSource - PullRequest
5 голосов
/ 03 августа 2009

Вот сценарий (который использует BindingSource, связанный с DataTable внутри DataSet):

  1. Пользователь создает новую адресную книгу контакт, заполняет первый и последний имя в элементах управления с привязкой к данным.
  2. Он нажимает Применить, чье событие вызовы обработчика BindingSource.EndEdit ().
  3. Затем он понимает, что ошибка, и добавляет адрес электронной почты.
  4. Но когда он нажимает Применить, проверка не пройдена (неверный адрес электронной почты формат), поэтому EndEdit () не вызывается.
  5. Он решает не делать правку, и нажимает кнопку Отмена, чья вызовы обработчика событий BindingSource.CancelEdit ().
  6. Но вместо того, чтобы вернуться к новый контакт только с первым и Фамилия и адрес электронной почты, BindingSource вместо этого избавился всей записи.

Есть ли способ отменить только действия с момента последнего вызова EndEdit ()? У меня сложилось впечатление, что так должна была работать CancelEdit ().

1 Ответ

3 голосов
/ 03 августа 2009

В качестве объяснения, DataTable содержит только 2 состояния для записи, Оригинал и Текущий. Ваш запрос потребует нескольких состояний.

Чтобы достичь желаемого, вы должны сбросить изменения в базу данных (например, Adapter.Update (таблица)) в ответ на успешное применение. Это продвигает ваш Текущий к оригиналу, и следующая Отмена может вернуться к этому.

Это может соответствовать или не соответствовать вашим требованиям.

...