现在的位置: 首页 > 综合 > 正文

BindingMemberInfo

2012年01月11日 ⁄ 综合 ⁄ 共 517字 ⁄ 字号 评论关闭
要求实现ListBox中Item的OwnerDraw,
发现在使用DataBinding时DrawItem 事件中ListBox.Items[e.Index].ToString()返回的都是 DataRowView类型,
第一次尝试:
直接cast成DataRowView,然后用DisplayMember来获取对应列的值

DataRowView drv = listBox1.Items[e.Index] as DataRowView;
String drawText = drv[listBox1.DisplayMember].ToString();

一开始工作的很好,但是后来发现如果当DataSource是一个DataSet object,而DataMember是“TableName.ColumnName”时无法工作。
查找文档发现有一个工具类BindingMemberInfo,可以解析这个字符串。
试了一下果然奏效,
BindingMemberInfo info = new BindingMemberInfo(listBox1.DisplayMember);
String drawText = drv[info.BindingField].ToString();

搞定收工!

【上篇】
【下篇】

抱歉!评论已关闭.