在界面load中绑定combobox,DisplayMember和ValueMember都绑定了字段的,设置了SelectedValueChanged事件让datagridview的数据根据选择项来绑定,问题是界面加载时也触发SelectedValueChanged,并且加载时combobox的SelectedValue没有值,这样查询数据库时就报错了,请教这该怎么解决?

解决方案 »

  1.   


    try 
    {
    ....
    }
    catch{}
      

  2.   

    可以定义一个全局bool型变量来控制
    private bool bTag = false;load事件中
    private void Form1_Load(object sender, System.EventArgs e)
    {
          //执行绑定combobox操作
           bTag = true;
    }SelectedValueChanged事件中
    if(bTag)
    {
     //执行对应数据库操作
    }
      

  3.   

    这样的话加载的时候datagridview就是空的了,有没办法让combobox有值,加载时就能显示第一条数据呢?
      

  4.   

    在数据绑定到ComboBox后,自定义事件处理语句,如:
    comboBox1.SelectedValueChanged += this.Handler;
    this.Handler(this, EventArgs.Empty);  // 手工调用
      

  5.   

     string sql = string.Format("select * from Users where id={0} ", UserHelper.QQnum);
                SqlCommand command = new SqlCommand(sql, DBHelper.connection);
                DBHelper.connection.Close();
                DBHelper.connection.Open();
                SqlDataReader datareader = command.ExecuteReader();            while (datareader.Read())
                {
                    if (Convert.ToInt32(datareader["FriendshipPolicyId"]) == 1)
                    {
                        radioButton1.Checked = true;
                    }
                    else if (Convert.ToInt32(datareader["FriendshipPolicyId"]) == 2)
                    {
                        radioButton2.Checked = true;
                    }
                    else if (Convert.ToInt32(datareader["FriendshipPolicyId"]) == 3)
                    {
                        radioButton3.Checked = true;
                    }
                    textBox2.Text = datareader["LoginPwd"].ToString();
                    textBox4.Text = datareader["id"].ToString();
                    textBox6.Text = datareader["NickName"].ToString();
                    comboBox1.Text = datareader["Sex"].ToString();
                    textBox5.Text = datareader["Name"].ToString();
                    textBox7.Text = datareader["Age"].ToString();
                    //星座
                    if (!(datareader["starid"] is DBNull))
                    {
                        comboBox2.Text = comboBox2.Items[Convert.ToInt32(datareader["starid"])-1].ToString();
                    }
                    //血型
                    if (!(datareader["BloodTypeId"] is DBNull))
                    {
                        comboBox3.Text = comboBox3.Items[Convert.ToInt32(datareader["BloodTypeId"])-1].ToString();
                    }
                }
                datareader.Close();
                DBHelper.connection.Close();
            }
      

  6.   

    你先把comboboxde所有值从数据库加载上
    在查询那个信息
     comboBox2.Text = comboBox2.Items[Convert.ToInt32(datareader["starid"])-1].ToString(); 这段代码就可以实现加载就会出现在comboBox.text中
      

  7.   

    加个判断 如果datagridview为空就不绑定