结账combobox问题

    xiaoxiao2021-03-25  75

    想要达到的效果是:窗体加载的时候就在userIDcombobox里面添加从数据库中查出来的数据,窗体加载结束之后点userIDcombobox的时候username里面的数据随着userID的变化而变化。下面是我的代码:

    private void fMCheck_Load(object sender, EventArgs e) { Facade.AdminFacade f = new Facade.AdminFacade(); DataTable dt = f.AllUsers(); cmbuserid.DataSource = dt; cmbuserid.DisplayMember = dt.Columns[0].ToString();//把数据表里的某一列显示在combobox里 string cardid = cmbuserid.Text.Trim(); cmbusername.Text = f.Selectusername(cardid); } private void cmbuserid_SelectedIndexChanged(object sender, EventArgs e) { Facade.AdminFacade f = new Facade.AdminFacade(); string cardid = cmbuserid.Text.Trim(); cmbusername.Text = f.Selectusername(cardid);//根据ID查询username }

    遇到的问题:

    当注释掉cmbuserID_SelectedIndexChanged事件里面的代码时,加载没有任何问题,但是不能实现加载完成之后选择userID后面的username自己变换。直接运行会报类型转换的错误把加载事件的代码放到cmbuserID_SelectedIndexChanged事件里,并把加载事件的代码注释掉运行没有错误,但是加载完成之后没有userIDcombobox里没有任何东西。

    原因分析:

    cmbuserid.DisplayMember = dt.Columns[0].ToString();

    这行代码在load的时候会触发cmbuserID_SelectedIndexChanged事件,这就导致下面查询的时候userID不对,转换不过来的bug。

    解决方案: 在cmbuserID_SelectedIndexChanged事件里加一个if语句,判断userID是否格式正确,然后再进行查询就不会有问题了。

    转载请注明原文地址: https://ju.6miu.com/read-32474.html

    最新回复(0)