BindingSource: как отменить изменения текущего элемента

У меня есть список предметов, которые я получаю из репозитория_DohvatiSveZapise:

      using Entities entities = new Entities())
        {
            return entities.Zapis.ToList();
        }

и этот список я использую в качестве источника данных

      this.zapisBindingSource.DataSource = baza.DohvatiSveZapise();

Объект "Запись" имеет некоторые строковые свойства, привязанные к текстовым полям. Когда пользователь изменяет значение в каком-либо текстовом поле, он может сохранить или отменить изменения. Я пробовал это для отказа

  zapisBindingSource.CancelEdit();

но текущий элемент (bindingsource.Current, который изменен пользователем) по-прежнему имеет измененные значения. Как я могу отменить все изменения, внесенные в текущий элемент в источнике привязки?


person Error    schedule 05.05.2014    source источник
comment
Что произойдет, если вы попытаетесь снова установить источник привязки this.zapisBindingSource.DataSource = baza.DohvatiSveZapise();?   -  person Jacob Seleznev    schedule 06.05.2014
comment
Тогда это работает ... но это означает, что я читаю из базы данных, например, 1000 записей, чтобы отменить изменения, сделанные в одной из них ....   -  person Error    schedule 06.05.2014


Ответы (1)


Нет автоматического управления отменой модификаций пользовательских объектов.

Из BindingSource .CancelEdit Страница MSDN:

Этот метод отменяет изменения данных с момента последней операции сохранения или загрузки, если выполняются оба следующих условия:

  • Источник данных реализует интерфейс IEditableObject.

  • Метод EndEdit еще не вызывался.

Поэтому вам нужно закодировать собственную логику отмены при реализации интерфейса IEditableObject.

person MathB.Fr    schedule 06.05.2014