2013-09-05 5 views
0

У меня есть DataGrid, который содержит несколько столбцов:
CategoryID, SubcategoryID, SubcategoryName (невидимый, невидимый, видимый)C#, DataGridView - Новая строка содержит мусор после того, как выбран

При создании новой подкатегории, Требуется категоризация категории.

Я ввожу новую подкатегорию из UI. Если я нажму ENTER, он закончит редактирование текущей строки и выберет строку ниже, без запуска режима редактирования (он просто подсвечивается). Этот временный выбор приводит к тому, что моя SubcategoryName переходит в значение пустой ячейки по умолчанию null до string.empty значение.

Затем, когда я пытаюсь отправить свои данные обратно в базу данных, это вызывает проблему. Адаптер данных вызывает ошибку, заявляя, что CategoryID не может быть нулевым. Из того, что я проверил, это вызвано новой строкой, содержащей некоторый невидимый мусор. Если я отредактирую новую строку и введу обычное имя подкатегории, все будет хорошо (CategoryID будет вставлен функцией, которая обнаруживает, что SubcategoryName не пуст).

Как я могу удалить удаленные данные из новой строки?

Я судимое посылая ключ ESC с SendKeys.Send ("{ESC}") и DG_SubcategoryEdit.CancelEdit()

ответ

0

Через некоторое время, пытаясь решить эту проблему, я узнал, что всякий раз, когда вы хотите вставить что-то в строку в качестве дополнения к тому, что пользователь поставил там, вы всегда должны использовать DefaultValuesNeeded событие вместо RowValidated. DefaultValuesNeeded обрабатывает правильное удаление остатков строки, если издание не выполняется. Если вы вставляете что-нибудь, даже нулевое значение, в RowValidated строка подсчитывается как отредактированная и будет пытаться синхронизировать себя с базой данных.

Сложная часть (и, вероятно, ошибка) состоит в том, что «отредактированная» строка, содержащая нуль, отображается как новая пустая строка в нижней части DataGridView, а не как обычная пустая строка. Таким образом, эта строка вызывает ошибку, говорящую, что вы не можете удалить новую строку, если вы попытаетесь ее удалить.

Смежные вопросы