博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListBox和ComboBox绑定数据简单例子
阅读量:7088 次
发布时间:2019-06-28

本文共 2802 字,大约阅读时间需要 9 分钟。

1. 将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容

//自定义了Person类(有Name,Age,Heigth等属性)List
persons=new List
();persons.Add(new Person("WuMiao",18,175));persons.Add(new Person("YeXinYv",20,170));persons.Add(new Person("WuDong",18,175));//ListBox控件实现lb_PersonsList.DataSource=persons; //指定数据源lb_PersonList.DisplayMember="Name"; //界面显示的是人的名字//ComboBox控件实现 (与ListBox的实现类似)cmb_PersonList.DataSource=persons;cmb_PersonList.DisplayMember="Name";

 

2. ComboBox绑定数据源并提供下拉提示功能

/// /// 为ComboBox绑定数据源并提供下拉提示/// /// 
泛型
/// ComboBox/// 数据源/// 显示字段/// 隐式字段/// 下拉提示文字public static void Bind
(this ComboBox combox, IList
list, string displayMember, string valueMember, string displayText){ AddItem(list, displayMember, displayText); combox.DataSource = list; combox.DisplayMember = displayMember; if (!string.IsNullOrEmpty(valueMember)) combox.ValueMember = valueMember;}private static void AddItem
(IList
list, string displayMember, string displayText){ Object _obj = Activator.CreateInstance
(); Type _type = _obj.GetType(); if (!string.IsNullOrEmpty(displayMember)) { PropertyInfo _displayProperty = _type.GetProperty(displayMember); _displayProperty.SetValue(_obj, displayText, null); } list.Insert(0, (T)_obj);}

使用方法

 
具体的使用操作代码

 

3. 双向绑定

  ListBox控件的datasourse属性能绑定多种数据格式,如List表,Table表。如果绑定List表当数据源发生改变时,ListBox控件显示并不会跟着改变。

  使用BindingList<T>类能实现数据源改变后ListBox的实时更新。只需要把数据源添加到BindingList对象中,并将ListBox的datasource绑定为BindingList 对象。当对BindingList的数据进行发生增、删、或者指向新对象时ListBox界面将跟着变动。需要注意的是对数据源属性的修改并不会引起界面的更新。

  DataTable也能实现该功能。实现这一功能的原理是一个叫做双向绑定的功能。

 

4. ListBox数据绑定并显示的问题

以前以为可以根ASP.NET中的用法差不多,即

ListBox listBox;listBox.DataSource = ds;listBox.DataTextField = "要显示的字段名";listBox.DataValueField = "id";listBox.DataBind();

然后利用listBox.SelectedItem即可访问被选中的项的值,当然在WinForm中除了DataSource的属性还有,其他都没有了,WinForm就换成如下方式:

listBox.DataSource = ds.Tables[0];listBox.DisplayMember = "carsnumber";listBox.ValueMember = "id";

这 样便可在ListBox正确显示出来,并且利用listBox.SelectedValue可以得到选定项的对应的id, 但是当我用listBox.SelectedItem打算得到相应的carsnumber值时,确显示System.Data.DataRowView, 利用listBox.Item[]访问得到的结果是一样的。最后在网上搜搜看能不能找到答案,又在CSDN上搜了一下以前的帖子,最后找到了答案,如果要 循环访问绑定了的Text值和Value 值,可用如下方式:

for( int i = 0; i < listBox.Items.Count; i++ ){DataRowView drv = listBox.Items[i] as DataRowView;if( drv != null ){MessageBox.Show( "Text:" + drv[listBox.DisplayMember].ToString() );MessageBox.Show( "Value:" + drv[listBox.ValueMember].ToString() );}}

 

参考文章

1. 

2. 

3. 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5705437.html
,如需转载请自行联系原作者
你可能感兴趣的文章
大数据相关技术有哪些?
查看>>
和 Pipelining 说再见,cURL 放弃使用管道技术
查看>>
Egg 2.16.2 发布,企业级 Node.js 框架
查看>>
计算几何 - 最近点对 分治法
查看>>
大众继续深耕SUV市场:5款新车型先于上海车展登场,ID. ROOMZZ成点睛之笔 ...
查看>>
使用CODERUN部署阿里云KUBERNETES
查看>>
没有所谓好与不好,只是能否适用和用的好
查看>>
Linux基础命令---gunzip
查看>>
Linux基础命令---文本编辑
查看>>
星矿科技完成千万元融资,专注明星IP价值商业化 ...
查看>>
Linux基础命令---ipcalc计算IP地址
查看>>
一位医疗 AI 创业者的自述:这个行业到底需要什么样的产品?
查看>>
重磅福利,阿里云携手合作伙伴向公益机构免费提供40多种软件服务!
查看>>
MyBatis 自定义 typeHandler
查看>>
MES、ERP已死,中国工业互联网呼唤新的智能模式!
查看>>
SpringMVC请求乱码
查看>>
Java NIO
查看>>
我们的手机用上北斗导航了吗?
查看>>
6年来,Docker的这些变化你都知道吗?
查看>>
支付宝客户端架构解析:iOS 客户端启动性能优化初探
查看>>