comboBox的id返回System.Data.DataRowView
Posted 王晓东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了comboBox的id返回System.Data.DataRowView相关的知识,希望对你有一定的参考价值。
关系到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
以上是关于comboBox的id返回System.Data.DataRowView的主要内容,如果未能解决你的问题,请参考以下文章
getX,getY,getScrollX,getScrollY,ScrollTo(),ScrollBy()辨析
该站点突然返回 System.Data.OleDb.OleDbException:未指定错误可能是啥?
System.Data.SqlClient.SqlException:列名“phone_types_phone_type_id”无效