这个方法是绑定CommoboxX数据源的
private void bindRoomType()
        {
            this.cmbRoomType.DataSource = myBRoom.getRoomType();
            this.cmbRoomType.DisplayMember = "TypeName";
            this.cmbRoomType.ValueMember = "ID";
        }这个这个事件是实现动态筛选DataGridViewX数据源的
 private void cmbRoomType_SelectedValueChanged(object sender, EventArgs e)
        {
            int paramStatus = int.Parse(cmbRoomType.SelectedValue.ToString());
            dgvRoomInfo.DataSource = myBRoom.getRoomInfoByRoomStatus(paramStatus);
        }
我主要是要通过CommoboxX选定项的ValueMember也就是"ID"字段进行数据源筛选,我自己觉得应该是CommoboxX的SelectedValue,,可运行时,我还没对CommoboxX进行选择,就会报错了系统提示“int paramStatus = int.Parse(cmbRoomType.SelectedValue.ToString());”输入的字符串不正确,我都无语了

解决方案 »

  1.   


                //加上
                if(cmbRoomType.SelectedIndex >= 0)
                {
                }
                //如果不对你要调试cmbRoomType.SelectedValue.ToString()的值啊
      

  2.   

    设置 ComboBox 的DropDownStyle属性为DropDownList
    如果你的getRoomType() 返回的是 List<RoomType>;那你也可以这样:
    private void cmbRoomType_SelectedValueChanged(object sender, EventArgs e)
    {
      int paramStatus = (cmbRoomType.SelectedItem as RoomType).ID;
      dgvRoomInfo.DataSource = myBRoom.getRoomInfoByRoomStatus(paramStatus);
    }
    这样就不需要设置ValueMember了[align=center]********************************************************
    本内容用 CSDN小秘书 回复
    每天回帖即可获得10分可用分!
    ********************************************************[/align]
      

  3.   

    从程序运行结果来看,cmbRoomType_SelectedValueChanged事件总是在Form_Load事件之前执行,也只有在这种情况下,我觉得才会发生这样的错误,我的绑定数据源方法bindRoomType()
    是放在Form_Load里面,这样页面加载时就会绑定CommoboxX数据源
      

  4.   

    你不要SelectedValueChanged事件,用SelectedIndexChanged事件试下~!这个不选择就不会触发[align=center]********************************************************
    本内容用 CSDN小秘书 回复
    每天回帖即可获得10分可用分!
    ********************************************************[/align]