Datagridview записывает правки строк непосредственно в базу данных - PullRequest
1 голос
/ 26 октября 2011

Использование Winforms, vs2008.

У меня есть сетка данных, привязанная к bindingsouorce, прикрепленному к набору данных с таблицей данных.

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

Моя проблема заключается в нахождении события, которое надежно инициируется, когда пользователь завершил редактирование 1 или более ячеек в строке, как им нужно.

Строки никогда не добавляются в эту сетку, они являются только редактированием существующих строк или удалением строки.

Я мог бы написать через мониторинг события datagridview.rowleave или я мог бы использовать источник привязки PositionChanged или текущий элемент изменил события.

Проблема в том, что все эти события срабатывают только тогда, когда кто-то отходит от текущей редактируемой строки. Это большая проблема, когда в сетке есть только 1 строка данных или редактируется самая последняя строка в сетке. Ни одно из этих событий не сработает, пока вы не отойдете от ряда.

Что я могу сделать? Как я могу иметь дело с одной строкой в ​​сетке или редактированием последней строки, или удалением строки.

Любой совет приветствуется.

спасибо

1 Ответ

1 голос
/ 26 октября 2011

Вы не проясняете это на 100%, когда считаете, что строка готова к сохранению.Вы говорите, что проблема в том, что вы запускаете определенные события только тогда, когда вы удаляетесь от текущей строки, но я не уверен, когда еще вы могли бы считать, что строка завершена с редактированием?

Это сказалодва события, на которые я смотрю, это событие DataGridView RowValidated и событие CellEndEdit.

RowValidated запускается, когда проверяются все изменения строки - обычно, когда строка оставлена, но в отличие от некоторых событий, таких как BindingSource PositionChangedэто событие срабатывает даже тогда, когда сетка теряет фокус.(есть также событие DataGridView Leave, но это, вероятно, не совсем верно).

Если вы хотите фиксировать каждый раз, когда данные в строке изменяются, то событие CellEndEdit, вероятно, лучше всего.

...