Как получить значения в нескольких отредактированных ячейках DataGridView для обновления базы данных - PullRequest
0 голосов
/ 27 марта 2020

У меня есть DGV, который выглядит следующим образом:

Example DGV for editing multiple cells

Каждая строка в DGV является записью в таблице базы данных.

Мне нужно разрешить пользователю редактировать любые ячейки, которые он sh, и затем одним нажатием кнопки обновить базу данных новыми значениями. (Существует скрытый столбец, содержащий идентификатор таблицы базы данных записи.)

Я знаю, что могу получить старое значение ячейки, прочитав его в событии CellEnter, а затем получив новое значение в CellLeave (по крайней мере, это способ, которым я знаю, как это сделать), но это только для одной клетки. Как мне выполнить sh это для нескольких ячеек одновременно? У меня была мысль создать многомерный массив для хранения индексов строк и столбцов, новых и старых значений для каждой отредактированной ячейки, а затем прочитать массив, чтобы обновить базу данных. Но я не уверен, что это лучший способ go об этом.

Еще один вариант, о котором я думал, - это перебирать каждую ячейку в DGV, но, делая это, я смогу получить как старый, так и новые значения в ячейке, отредактированной пользователем?

1 Ответ

0 голосов
/ 28 марта 2020

Это проще, чем вы думаете. Нет необходимости перебирать DGV. Если он привязан к таблице данных (или к набору данных), просто дайте пользователю ввести и изменить данные в сетке, и таблица данных обновится сама.

Я знаю, что могу захватите старое значение ячейки, прочитав его в событии CellEnter, а затем получив новое значение в CellLeave

Ненужно. Используя таблицу данных, вы можете получить доступ к исходному значению и новому значению ячейки и сравнить их. См. datarowversion. Но если вы просто хотите сказать, какие строки были изменены, вы можете просто использовать функцию datarowstate.

Затем, чтобы обновить данные в внутренней базе данных, вы можете использовать SqlDataAdapter. Возможно, вам понадобятся некоторые ограничения для таблицы данных и таблицы для целей проверки (например, если некоторые ячейки могут быть не пустыми). Но в целом почти нет необходимости напрямую обращаться к DGV. Вместо этого вы работаете с источником данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...