|
DataGridView, добавить запись к связанному набору DataGridViewRowCollection
|
|||
---|---|---|---|
#18+
Добрый день, Есть 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) тоже не работает – на сервер команда не посылается на этом событии. Есть идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2015, 21:06 |
|
DataGridView, добавить запись к связанному набору DataGridViewRowCollection
|
|||
---|---|---|---|
#18+
Для того, чтобы удаленная строка снова появилась в DataGridView, нужно: 1. На событии UserDeletingRow запомнить удаляемую строку, например: deletedRow = ((DataRowView)e.Row.DataBoundItem).Row; 2. На событии UserDeletedRow после неудачной попытки удаления отменить изменения в этой строке: deletedRow.RejectChanges(); тем самым RowState строки будет изменен с Modified на Unchanged 3. dataGridView.Refresh(); включит удаленную строку в набор строк грида ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2015, 02:21 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1401698]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 345ms |
total: | 480ms |
0 / 0 |