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

ComboBox 数据绑定技巧

2013年01月14日 ⁄ 综合 ⁄ 共 1196字 ⁄ 字号 评论关闭
ComboBox常用的绑定是绑定个DataSet给它。而绑定个IList给它呢,就有个技巧了。
如果你的Ilist是List<IDictionary>的,就不行了,ComboBox的DisplayMember, ValueMember需要从对象的property里获取值,而IDictionary的只是Key,所以不行。如果你想绑定IList 或 ArrayList的话,就得用一个实体类(Java或ORM里的概念)来作为数据的存放对象,然后把对象Add到列表里,然后就可以给DataSource赋值了。
定义一个类,有两个属性
public class ValueObject{
private string _name;
private string _value;
internal Name
{
get { return _value; }
set { _value = value; }
}
}

然后,用一个
ArrayList list = new ArrayList();
for(int i=0; i<3; i++)
{
ValueObject vo 
= new ValueObject();
vo.Name 
= "a";
vo.Value 
= "1";
list.add(vo);
}

ComboBox cbb = new ComboBox();
cbb.DataSource 
= list;
cbb.DisplayMember 
= "Name";
cbb.ValueMember 
= "Value";

这样就OK了,取值只要cbb.SelectedValue就取到了。
如果有做过java的话,这VO的作用就会很清楚的了。

另外,很多人不知道怎样根据读取的value来选定列表,其实用
ComboBox.SelectedValue = "xxx"就可以选定的了。
下面有个蠢方法,是我发现这个方法前使用的

IEnumerator enumer = ORG_TYPE_ID.Items.GetEnumerator();
            
int i = 0;
            enumer.Reset();
            
while (enumer.MoveNext())
            
{
                DataRowView dt 
= (DataRowView)enumer.Current;
                
if (dt["ORG_TYPE_ID"].ToString().Equals(drv["ORG_TYPE_ID"].ToString()))
                
{
                    ORG_TYPE_ID.SelectedIndex 
= i;
                }

                i
++;
           }

抱歉!评论已关闭.