winform下comboBox控件绑定数据并设置其value【整理】

最近在做comboBox绑定数据库数据时遇到一个问题,就是绑定之后怎样获取其value

开始是这样做的:

///   <summary>
///  加载用户列表到comboBox
///   </summary>
private   void  GetUserList()
{
    
// 调用连接数据库函数
    OpenConn();
    SqlCommand cmd 
=  conn.CreateCommand();
    cmd.CommandText 
=   " select * from Users " ;
    SqlDataReader sdr 
=  cmd.ExecuteReader();
    
    
while (sdr.Read())
    {
        
// 索引1是用户名
        comboBox1.Items.Add(sdr.GetValue( 1 ));
    }
    sdr.Close();
}


这样可以得到用户列表,但是comboBox的SelectValue却都是null,所以如果不能进行SelectedIndexChanged事件的操作(虽然可以用comboBox的SelectIndex等其他属性,但是还是没有SelectValue方便)。
后来在网上找到一种方法,利用ArrayList存放数据库的数据并将ArrayList作为数据源绑定到comboBox,如下:

///   <summary>
///  加载用户列表到comboBox
///   </summary>
private   void  GetUserList()
{
    
// 调用连接数据库函数
    OpenConn();
    SqlCommand cmd 
=  conn.CreateCommand();
    cmd.CommandText 
=   " select * from Users " ;
    SqlDataReader sdr 
=  cmd.ExecuteReader();

    ArrayList al 
=   new  ArrayList();
    
    
while  (sdr.Read())
    {
        //索引0为用户在数据库中的ID,该值到时作为comboBox的value,这样就可以使用comboBox的SelectValue了         al.Add(
new  DictionaryEntry(sdr.GetValue( 0 ), sdr.GetValue( 1 )));
    }
    sdr.Close();

    
this .comboBox1.DisplayMember  =   " Value " ;
    
this .comboBox1.ValueMember  =   " Key " ;
    
// 注意:下面这句要放到最后面
    
// 因为执行到下面这句后会调用SelectedIndexChanged事件(不知道为什么,谁能解释一下吗?)
    
// 这时如果没有判断SelectVlaue是否为空可能会出错
     this .comboBox1.DataSource  =  al;
}

 

转载于:https://www.cnblogs.com/linyc/archive/2009/06/18/1505836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值