关于.net winform 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属性。

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告