下拉框是一个很经典的控件,网上也有不少对于下拉框控件的扩展,其中包括与TreeView结合,做成树形选择;与DataGrid结合,做成列表选择;又或增加几个按钮来达到快捷编辑集合,选中项特殊显示等等。
对于复杂的组合控件,我这里就不必多说,只说说原生ComboBox的一些应用。
原文链接:http://nanqi.info/blog/2013/03/29/winform-wpf-2/
绑定数据源
简单的给Items添加项我就不说了,比如一些类型的选择多数使用这种,如一个员工的职位,是程序猿呢,还是项目经理。
但往往这种职位,是需要考虑扩展的,也就是说这个职位也要可维护的,所以一般的软件做法,在数据库中以字典表的形式去保存这类情况,而数据库设计中又有这么一个要求,每个表都要有不重复的ID做主键,所以经常看到如此的表结构:
GUID varchar(50)
Name varchar(50)
...
那么,将该数据展示在ComboBox中,可能就需要展示的是Name,而你只想获取选择的GUID。
所幸不管在WinForm还是WPF中,更或是在web开发中,即使纯Html的ComboBox,都有这种选择的一个值,而可能实际获得的是另一个值。
WinForm中指定DisplayMember
与ValueMember
属性,WPF中指定DisplayMemberPath
与SelectedValuePath
属性,可以很简单的实现上述要求。
而如果当这个字典表很大,或者客户需要给这种职位、类别之类的东西编号的时候,这时可能需要在显示的时候既显示编号,又显示名称,这时的表结构可能会这样:
GUID varchar(50)
No varchar(50)
Name varchar(50)
...
如果不拘于形式而言,一般完全可以使用No替换GUID,不管怎样,现在就是想要既获得主键列的值,又想显示No + Name
的形式。