У меня есть приложение .NET 2.0 Winforms (и Subsonic 2.2), где у меня есть DataGridView и несколько элементов управления на панели, оба связаны с BindingSource, источником данных которого является коллекция Subsonic ActiveRecord. Когда пользователь выбирает строку в сетке, соответствующая информация отображается на панели ниже в соответствующих элементах управления (texbox, combo, datetimepicker и т. Д.)
Когда пользователь изменяет некоторые данные и пытается перейти к какой-либо другой строке, я хочу, чтобы приложение отображало предупреждение о том, что данные изменились и их необходимо сохранить. Если пользователь выбирает «да», данные должны быть сохранены.
Я сталкиваюсь с несколькими проблемами:
a) В обработчике событий DGV.RowEnter я пытаюсь определить, является ли текущая строка грязной (используя IsDirty из activerecord). Если это так, я отображаю окно сообщения.
b) Когда я сохраняю и перепривязываю сетку, источник данных из сетки данных не может быть повторно привязан к новой (сохраненной) коллекции. Приложение выдает ошибку, что «операция недействительна».
в) Кроме того, поскольку вид сетки и элементы управления привязаны к одной коллекции, всякий раз, когда я что-то изменяю в элементе управления, это отражается в сетке, но когда пользователь выбирает «Нет» для сохранения данных, изменения должны быть отменены. Есть ли у Subonic какие-либо изменения Принять / Отменить как набор данных?
Спасибо!