Пометить строку как удаленную в dataTable на UserDeletingRow

У меня есть таблица данных, привязанная к winforms dataGridView через BindingSourceControl. Я хочу иметь возможность обрабатывать событие UserDeletingRow из dataGridView и помечать строку в моем dataTable как удаленную. Затем мне нужно иметь возможность извлекать строки, помеченные как удаленные, из таблицы данных, чтобы я мог удалить их из своей базы данных при нажатии кнопки «Сохранить». Пожалуйста, не хочу, я не хочу удалять из базы данных при каждом запуске UserDeletingRow, только помечать эту строку как удаленную в моем наборе данных.

Может ли кто-нибудь указать, как это сделать?


person Dav Evans    schedule 27.04.2010    source источник


Ответы (2)


Лучшее, что я нашел для этого, - это обязательно вызвать AcceptChanges() для dataTable/dataset перед началом редактирования - я сделал это при загрузке формы, когда данные были привязаны к сетке. Теперь, когда пользователь удаляет записи через сетку, а затем нажимает «сохранить», я могу отфильтровать строки в dataTable по строке rowState, чтобы получить те, которые были удалены. Обратите внимание, что свойство Count в коллекции строк dataTable уменьшается на единицу каждый раз, когда пользователь удаляет строку, но строка все еще находится в dataTable, она просто помечена для удаления.

person Dav Evans    schedule 10.05.2010

Захватите "для удаления" rowId(s) в коллекции, затем создайте некоторый метод и передайте коллекцию для обработки удаления записей.

person Avien    schedule 27.04.2010