powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView, добавить запись к связанному набору DataGridViewRowCollection
2 сообщений из 2, страница 1 из 1
DataGridView, добавить запись к связанному набору DataGridViewRowCollection
    #38927535
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Есть DataGridView.

Если выделить строку и нажать Delete, строка будет удалена из DataGridViewRowCollection, из DataTable, служащей источником, и из базы данных на сервере.

Собственно это работает и сейчас. А именно:
На событии UserDeletingRow моего DataGridView данные валидируются и если что-то не так, процесс можно отменить. Чтобы отправить команду на сервер на событии UserDeletedRow я использую нечто вроде:
TableAdapter.Update(SSDataSet);
dr.AcceptChanges();

Как я уже сказал, это работает. Но есть одна проблема. Если попытка удаления данных окажется неудачной, например, вследствие возникновения concurrency conflict, то произойдет следующее:
- запись на сервере не будет удалена
- запись в DataTable, служащей источником данных для DataGridView также не будет удалена
- запись набора DataGridViewRowCollection будет удалена

Соответственно произойдет рассогласование – в гриде строка не отображается, но в источнике данных она есть.
Естественно меня это не устраивает. Т.е. задача в том, как этого предотвратить. На событии UserDeletedRow, которое я использую для Update, строка в гриде уже отсутствует. Я попробовал добавить ее:

DataGridViewControl.Rows.Insert(deletedRow.Index, deletedRow.Row)

Но получил сообщение, что так нельзя делать со связанными данными. А как тогда можно эту запись опять добавить в набор DataGridViewRowCollection? Использовать событие UserDeletingRow для TableAdapter.Update(SSDataSet) тоже не работает – на сервер команда не посылается на этом событии.

Есть идеи?
...
Рейтинг: 0 / 0
DataGridView, добавить запись к связанному набору DataGridViewRowCollection
    #38928652
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы удаленная строка снова появилась в DataGridView, нужно:

1. На событии UserDeletingRow запомнить удаляемую строку, например:
deletedRow = ((DataRowView)e.Row.DataBoundItem).Row;

2. На событии UserDeletedRow после неудачной попытки удаления отменить изменения в этой строке:
deletedRow.RejectChanges();
тем самым RowState строки будет изменен с Modified на Unchanged

3. dataGridView.Refresh();
включит удаленную строку в набор строк грида
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView, добавить запись к связанному набору DataGridViewRowCollection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]