Добавить новую строку в DataGridView ошибка: программа не может зафиксировать или выйти из изменения значения ячейки - PullRequest
0 голосов
/ 20 марта 2012

Я пишу это приложение на C #, .NET 4, winforms.

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

locationBindingSource.AddNew(); //this is bound to datagridview
var row = locationsDGV.Rows[locationsDGV.Rows.Count - 2]; //get the new row
locationsDGV.CurrentCell = row.Cells[0]; //switch to new row <-throws error

Возникла ошибка: System.InvalidOperationException не обработано. Операция не выполнена, поскольку программа не может зафиксировать или выйти из изменения значения ячейки.

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

Можно ли преодолеть это, не отключив проверку строки?

Спасибо за ваши ответы.

РЕДАКТИРОВАТЬ: Bindingsource заполняется объектами, созданными Entity Framework. Когда пользователь создает новый объект, например «location», он создается со значениями по умолчанию, которые не могут быть сохранены в базе данных, поэтому мне нужна проверка. Я подтверждаю, что все важные поля не пусты (или заполнены значениями по умолчанию). Если они есть, я отменяю проверку. Я думаю, что вы можете легко воссоздать его с помощью простого связующего списка простых (достаточно одного строкового поля) объектов, связанных с сеткой данных. Затем создайте событие проверки строки и подтвердите, используя нечто подобное.

Location location = (Location)locationBindingSource.Current;
if (string.isNullOrWhitespace(location.stringProperty))
    e.cancel=true;

1 Ответ

0 голосов
/ 24 июля 2014

Похоже, вам нужно подтвердить событие.Смотрите эту ветку: http://social.msdn.microsoft.com/Forums/windows/en-US/91883e42-68eb-40b9-9eae-3b76f671a48b/operation-did-not-succeed-because-the-program-cannot-commit-or-quit-a-cell-value-change?forum=winformsdatacontrols.

Вот более подробная документация по событию CellValidation: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvalidating.aspx

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