我们在客户端程序的设计中经常会用到组合下拉框,就像这种情况
我在项目中想用datagridview来实现这种功能,看了若干博客,msdn也翻了半天,终于有了一点理解。
这里有几个关键点:
1、datagridview控件的列的类型有多重,包括
(1)DataGridViewTextBoxColumn(文本列,默认的情况下就是这种)
(2)DataGridViewComboBoxColumn(组合框列,名字瞎起的,就是这个功能要用到的列)
(3)DataGridViewLinkColumn(链接列)
(4)DataGridViewButtonColumn(按钮列)
(5)DataGridViewCheckBoxColumn(打钩列?差不多这个意思)
我想要添加一个这样的组合框列,就选择新建DataGridViewComboBoxColumn,然后添加到datagridview中去就可以了,这是基本想法。
2、DataGridViewComboBoxColumn的数据绑定
DataGridViewComboBoxColumn有几个关键属性
(1)DataSource:顾名思义,绑定的数据,把需要绑定的表赋值就可以
(2)DataPropertyName:根据msdn说法是设置数据源属性的名称,我理解就是这是从大表里选择数据,用数据源属性名称来标识一下这个是什么属性。可以随意写,也可以不写,应该是起一个提示的作用。
(3)DisplayMember:这是最关键的属性,首先,它必须是数据表的一个字段,其次,它是前台显示出的数据。所以,它就是相当于一个select语句,从DataSource的Table中检索字段名=DisplayMember的所有数据。Select ‘DisplayMember’ from ‘DataSource’(‘’中的表示用相应的实际数据替换),其实理论上DisplayMember+DataSource就可以完成了这个combox嵌入datagridview的功能了。
(4)ValueMember:
Gets or sets a string that specifies the property or column from which to get values that correspond to the selections in the drop-down list.
获取或设置一个字符串,此字符串指定要从其中获取与下拉列表的选项对应的值的属性或列。
这个属性应该是为了和DisplayMember组成一个映射关系,但是根据msdn的说法
In this example, the DisplayMember is set to the same value as ValueMember because no mapping is necessary.
DisplayMember 设置为负责包含用户可查看的文本的属性名称。 在此示例中, DisplayMember 设置相同的值为 ValueMember 因为没有映射是必需的。
虽然这个翻译很费解,但是勉强能懂,就是在不需要映射时,将ValueMember 的值设置的和DisplayMember 一样就好了。
那

本文介绍如何在Windows客户端程序中使用DataGridView控件嵌入ComboBox,并详细阐述了DataGridViewComboBoxColumn的数据绑定过程,包括DataSource、DataPropertyName、DisplayMember和ValueMember属性的设置与作用。通过代码示例展示了如何实现用户输入与ComboBox选择的结合,以及在数据不规范时的处理策略。
最低0.47元/天 解锁文章
1892

被折叠的 条评论
为什么被折叠?



