【发布时间】:2012-09-17 17:12:02
【问题描述】:
在未绑定的数据网格视图中使用datagridviewcomboboxcolumn 时,我遇到了一个奇怪的大小写问题。该列最初填充了有效值,其中一些全为大写,一些混合大小写,但始终是唯一的。例如,“AB”、“AC”、AiDA”、“AltCurr”、“BE”等
选择任何大写项目时,一切都正常工作。但是,如果我从单元格的下拉列表中选择混合大小写的项目之一,则会发出“单元格包含无效数据”DataError 事件,并且单元格选择“AB”(即无法找到选择,因此默认到第一个条目)。
如果我将所有列表项都更改为大写,则不会出现问题(但实际上这不是一个选项!)。
我已经阅读了大量关于 BOUND datagridview 组合列中区分大小写的 cmets,解决方案是更改基础数据表上的区分大小写选项,但没有什么可以解决我的特定未绑定问题。
有没有其他人遇到过这个问题,如果有,您是如何解决的?
编辑:按要求编写代码示例...
Datagridviewcombobox 列已经在设计器中创建(col #2)。它从对象集合中填充如下:
m_subjectList = new SubjectList
for each sj as Subject in m_subjectlist
ctype(dgv.columns(2),datagridviewcomboboxcolumn).items.add(sj.SubjectCode) 'a string value
next
行是从基础数据表中手动添加的:
for each dr as datarow in ds.tables("Mappings").rows
dim r as integer = dgv.rows.add
dgv.rows(r).cells(2).value = dr("SubjectCode") 'varchar(10)
next
到目前为止一切正常 - DGV 显示正确,单元格组合中的值全部正确。无需更多代码。
现在,如果我单击任何这些行上的下拉菜单来更改主题,除非我选择“AiDA”或“AltCurr”项目(即混合大小写的项目),否则一切正常。 dataerror 上下文是 Formatting |显示。
如果我选择全部大写的任何列表项,则不会出现问题。在我看来,组合单元格在其 objectcollection 中没有找到混合大小写项目 - 底层组合对象集合的大小写敏感度和 DGV 用于检查集合内有效性的任何大小写敏感度存在差异。
【问题讨论】:
-
您能否展示一些数据示例和相应的代码?这将使人们更容易看到为什么会收到错误。
-
按要求添加代码示例
-
原始帖子的第一段中已经提供了相关数据的示例。
标签: winforms datagridview datagridviewcombobox