Показать недопустимое значение по умолчанию в DataGridViewComboBoxColumn - PullRequest
1 голос
/ 08 октября 2008

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

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

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

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

Ответы [ 3 ]

1 голос
/ 02 мая 2009

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

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

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

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

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

1 голос
/ 03 марта 2009

Я нашел очень странное решение:

Установить режим автоматического изменения размера столбца в нет ...

Вот объяснение

http://www.kebabshopblues.co.uk/2007/03/24/more-on-that-datagridviewcombobox-error/

0 голосов
/ 17 сентября 2009

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

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