博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
comboBox的id返回System.Data.DataRowView
阅读量:4878 次
发布时间:2019-06-11

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

关系到ComboBox的DataSource,DisplayMember和ValueMember属性的设置顺序的问题。

ComboBox的DataSource属性为object类型,但是需要实现IListSource接口的类型。

当把DataTable赋值给该属性后,如果此时没有指定ComboBox的DisplayMember和ValueMember属性的话,

这时获得的ComboBox的SelectValue属性将是System.Data.DataRowView的一个实例。

据此推测DataTable中实现的IListSource接口中的GetList()方法应该返回的是DataTable的

DefaultView,也就是DataView的一个实例是DataRowView的集合。而因为没有指定DisplayMember和ValueMember

属性,所以ComboBox直接把DataView中的每一个DataRowView实例填充到列表中。

这样的话就可能在ComboBox的SelectedIndexChanged事件处理中产生错误。

为了避免这个问题应该先设置DisplayMember和ValueMember属性,然后再设置DataSource属性

避免先设置DataSource属性。

 

combobox.ValueMember = "id";combobox.DataSource = dt;combobox.DisplayMember = "name";

比如在combobox_SelectedIndexChanged事件需要获取id,就要将id放在DataSource上面,否则获取不到

 

参考:

http://www.cnblogs.com/liuhonghai/archive/2010/03/31/1701211.html

http://blog.csdn.net/lubiaopan/article/details/5915774

转载于:https://www.cnblogs.com/Donnnnnn/p/6137014.html

你可能感兴趣的文章
Git闪退问题
查看>>
Linux命令
查看>>
Android UI线程和非UI线程
查看>>
hdu 2058
查看>>
【10.26校内测试】【状压?DP】【最小生成树?搜索?】
查看>>
单例模式概念
查看>>
使用主密钥和钱包方法加密数据
查看>>
API测试利器Postman简介
查看>>
简单四则运算表达式的java实现(1)
查看>>
django
查看>>
看paper的网址
查看>>
myna代码
查看>>
条款18 让接口容易使用,不易被误用
查看>>
SpringBoot定时任务
查看>>
获取磁盘空间
查看>>
Chap1 引言[The Linux Command Line]
查看>>
NHibernate 知识点整理
查看>>
linux初级学习笔记二:linux操作系统及常用命令,文件的创建与删除和命名规则,命令行展开以及linux中部分目录的作用!(视频序号:02_3)...
查看>>
HTML5 是什么
查看>>
用csc命令行手动编译cs文件
查看>>