2008-10-07 4 views
1

У меня есть DataGridViewComboBoxColumn в DataGridView в приложении Windows. Пользователь может изменить настройки в другом месте, чтобы потенциально сделать недействительным выбор в DataGridViewComboBoxColumn. У меня есть требование сохранить/отобразить недопустимый элемент, оставив только допустимые элементы, доступные в списке.Отобразить недопустимое значение по умолчанию в DataGridViewComboBoxColumn

Без корректировки выбора выбрано исключение:
Значение DataGridViewComboBoxCell недопустимо.

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

Есть ли способ предоставить значение DataGridViewComboBoxColumn, чтобы он не отображался в списке выбираемых значений?

+0

Вы знакомы с событиями CellValidating и DataError? Последний может вытеснить исключение, которое бросает DataGridView. – 2009-06-09 23:21:31

+0

Я поймал исключение и проигнорировал его (к сожалению, общий шаблон) и значение вернулось. Если у вас есть предложения, я все уши ... errr ... глаза? – BrianH 2009-06-15 14:47:27

ответ

1

Я собираюсь использовать пример, что значения в раскрывающемся списке представлены цвета, а в DataGridView есть список футболок в вашем шкафу.

Вы пытались вставить недопустимый цвет в объект списка, привязанный к столбцу ComboBox? Возможно, вы можете вставить что-то в список, чей ключ соответствует вашему недопустимому цвету, но показывает «(Invalid)» (или другой аналогичный текст). Вам нужно будет ответить на событие CellValidating, если кто-то попытается выбрать его после вашего первоначального связывания.

Если недопустимые цвета приходят путем изменения поиска в другом месте приложения, так что значения DataGridView (футболки) больше не действительны, у вас есть некоторые опции. Возможно, вы могли бы изменить эту логику, чтобы найти данные, которые входят в список футболок, и посмотреть, есть ли какие-либо существующие футболки с этим цветом. Затем попросите пользователя сказать: «Вы отключили красный цвет, но у вас есть Красные майки, что ты хочешь делать? Вы можете остановить деактивацию красного, сменить футболки или удалить футболки.

Если недопустимые цвета поступают из источника, который вы не контролируете, вы можете попросить пользователя, когда они попытаются посмотреть список футболок, «Красный цвет больше не является допустимым цветом для футболок, что мы делаем с красными майками? "

У нас есть аналогичное ограничение в нашем приложении. Мы сбросили комбинированные поля и вместо этого применили CellValidating.

0

Предположительно, ваш связанный источник данных для заполнения combobox доступен только для чтения. Если да, почему бы не просто временно вставить недопустимое значение в базовый источник данных. Таким образом, он все равно будет отображаться. Вы можете добавить временный столбец, чтобы помечать недопустимые элементы и не позволять пользователю оставлять его выбранным, а затем удалять его, когда пользователь перемещается из ячейки. Я никогда не делал этого с datagridview, но мы сделали что-то очень похожее на другую стороннюю сетку. Удачи!

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