在DataGridViewComboBoxColumn中显示无效的默认值

时间:2008-10-07 21:28:31

标签: c# winforms datagridview combobox

我在Windows应用程序的DataGridView中有一个DataGridViewComboBoxColumn。用户可以在其他位置更改设置,以使DataGridViewComboBoxColumn中的选择无效。我要求保留/显示无效项目,同时只留下列表中可选择的有效项目。

如果不更正选择,则抛出异常:
DataGridViewComboBoxCell值无效。

捕捉并忽略该设置会将所选值恢复为列表中的第一个有效项目。

有没有办法为DataGridViewComboBoxColumn提供一个值,以便它不会显示在可选值列表中?

3 个答案:

答案 0 :(得分:1)

我找到了一个非常奇怪的解决方案:

将autosizecolumnmode设置为none ...

这是一个解释

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

答案 1 :(得分:1)

我将使用下拉列表中的值为颜色的示例,并且DataGridView在您的衣柜中有一个T恤列表。

您是否尝试将无效颜色插入绑定到ComboBox列的列表对象?也许您可以在列表中插入一些其键与您的无效颜色匹配但显示“(无效)”(或其他类似文本)的内容。如果有人在初始绑定后尝试选择它,你必须回复CellValidating事件。

如果通过在应用程序中的其他位置更改查找来使无效颜色出现,以便DataGridView的值(T恤)不再有效,则可以选择一些选项。也许你可以改变这个逻辑来查找到T恤列表的数据,看看是否有任何现有的T恤,然后提示用户说“你已经停用红色,但你有红色T恤;你想做什么?“您可以停止停用红色,更换T恤或删除T恤。

如果无效颜色来自您无法控制的来源,您可以在用户试图查看T恤列表时提示用户,“红色不再是T恤的有效颜色,做什么我们用红色T恤做什么?“

我们的申请中有类似的约束。我们删除了组合框并改为使用CellValidating。

答案 2 :(得分:0)

据推测,填充组合框的绑定数据源是只读的。如果是这样,为什么不暂时将无效值插入基础数据源。这样它仍然会显示出来。您可以添加一个临时列来标记无效项目,并且不允许用户将其保留为选中状态,然后在用户离开单元格时将其删除。我从来没有用datagridview做过这个,但我们用不同的第三方网格做了类似的事情。祝你好运!