首页 > Asp.net开发 > Combox如何实现二级联动

Combox如何实现二级联动

最近在做机房的时候,需求是这样的,在选择一个用户名后,会显示出该用户的真实名字!这个功能在web 上用dropDownList 控件,很容易的就可以完成了,但是在winform上,好像就没那么简单了。

       我一开始做的时候,也是想像web 上那样, 请看博客web上如何实现两级联动!但是在winform上的时候,就会出现错误!请看下边的代码:

[csharp]

  1. private void cbxUserName_SelectedIndexChanged(object sender, EventArgs e)  
  2.        {  
  3.            //绑定用户真实姓名  
  4.            string userID = cbxUserName.Text.Trim();  
  5.            //string userID = cbxUserName.SelectedItem.ToString();  
  6.            txtTrueName.Text= fsa.LkUserTrueName(userID);  
  7.   
  8.   
  9.            //购卡  
  10.            dgvBuycard.DataSource = fsa.LkUserSellCardList(userID);  
  11.            //充值  
  12.            dgvRecharge.DataSource = fsa.LkUserChargeList(userID);  
  13.            //退卡  
  14.            dgvBackcard.DataSource = fsa.LkUserBackCardList(userID);  
  15.        }  
  16.   
  17.        private void frmSettleAccount_Load(object sender, EventArgs e)  
  18.        {  
  19.            //显示用户名   
  20.            DataTable dt = fsa.LkUserID();  
  21.            cbxUserName.DataSource = dt;  
  22.            this.cbxUserName.DisplayMember = "userID";  
  23.            this.cbxUserName.ValueMember = "userID";  
  24.            this.cbxUserName.SelectedIndex = -1;      
  25.        }  

    在cbxUserName控件绑定到表上的时候,他就会触发该控件的SelectIndexChange事件,但是此时该控件却不能获取值,所以传过去的空值。所以就会出错了!于是就想啊想,终于想出了一个办法。 就是先把该控件的SelectIndexChange事件取消,在绑定完了之后,在给该控件加上该事件! 看一下代码:

[csharp]

  1. private void cbxUserName_SelectedIndexChanged(object sender, EventArgs e)  
  2.  {  
  3.      //绑定用户真实姓名  
  4.      string userID = cbxUserName.Text.Trim();  
  5.      txtTrueName.Text= fsa.LkUserTrueName(userID);  
  6.   
  7.      //购卡  
  8.      dgvBuycard.DataSource = fsa.LkUserSellCardList(userID);  
  9.      //充值  
  10.      dgvRecharge.DataSource = fsa.LkUserChargeList(userID);  
  11.      //退卡  
  12.      dgvBackcard.DataSource = fsa.LkUserBackCardList(userID);  
  13.  }  
  14.   
  15.  private void frmSettleAccount_Load(object sender, EventArgs e)  
  16.  {  
  17.        
  18.        
  19.      //绑定用户名  
  20.      DataTable dt = fsa.LkUserID();  
  21.      this.cbxUserName.SelectedIndexChanged -= new System.EventHandler(this.cbxUserName_SelectedIndexChanged);  
  22.      cbxUserName.DataSource = dt;  
  23.      this.cbxUserName.DisplayMember = "userID";  
  24.      this.cbxUserName.ValueMember = "userID";  
  25.      this.cbxUserName.SelectedIndex = -1;  
  26.      this.cbxUserName.SelectedIndexChanged += new System.EventHandler(this.cbxUserName_SelectedIndexChanged);  
  27.   
  28.  }  

        这样一来,就很好的解决了这个问题。  希望能对你有所帮助!


本文固定链接: http://www.devba.com/index.php/archives/5274.html | 开发吧

报歉!评论已关闭.