Принять/отменить изменения в Subsonic 2.2

У меня есть приложение .NET 2.0 Winforms (и Subsonic 2.2), где у меня есть DataGridView и несколько элементов управления на панели, оба привязаны к BindingSource, источником данных которого является коллекция Subsonic ActiveRecord. Когда пользователь выбирает строку в сетке, соответствующие сведения отображаются на панели ниже в соответствующих элементах управления (текстовое поле, поле со списком, средство выбора даты и времени и т. д.).

Когда пользователь изменяет некоторые данные и пытается перейти к другой строке, я хочу, чтобы приложение отображало предупреждение о том, что данные изменились и их необходимо сохранить. Если пользователь выбирает «да», данные должны быть сохранены.

Я сталкиваюсь с несколькими проблемами:

а) В обработчике событий DGV.RowEnter я пытаюсь определить, является ли текущая строка грязной (используя IsDirty из activerecord). Если это так, я отображаю окно сообщения.

б) Когда я сохраняю и повторно привязываю сетку, источник данных datagridview не может быть повторно привязан к новой (сохраненной) коллекции. Приложение выдает ошибку, что «операция недействительна».

c) Кроме того, поскольку и представление сетки, и элементы управления привязаны к одной и той же коллекции, всякий раз, когда я что-то меняю в элементе управления, это отражается в сетке, но когда пользователь выбирает «Нет» для сохранения данных, изменения должны быть отменены. Есть ли у subonic какие-либо изменения Accept / Cancel, такие как набор данных?

Спасибо!


person NetTechie    schedule 16.01.2012    source источник


Ответы (1)


Я наконец-то понял:

а) Хотя я могу сохранить данные без каких-либо проблем, приложение выдает ошибку только, когда я пытаюсь «связать» его заново. Поскольку сетка и элементы управления уже привязаны к источнику данных, который содержит последние изменения, я удалил код повторной привязки, и теперь он больше не выдает никаких ошибок («Операция недействительна»

б) Отмена изменений — это было выполнено путем вызова BindingSource.CancelEdit(), когда пользователь не хочет сохранять изменения.

person NetTechie    schedule 19.01.2012