繁体   English   中英

选择一项后如何刷新组合框项?

[英]How do I refresh combobox item after selecting one item?

我的组合框包含一个服务员的名字。 当我将表分配给选定的服务员时,其状态为true,但组合框项不变。

在page_load上编程:---

private void frmTableAllotment_Load(object sender, EventArgs e)
        {

        dtTmPkr.Value = System.DateTime.Now;

        cmd = new SqlCommand("Select name from waiterentry2 where status='false'", con);
        con.Open();
        dr = cmd.ExecuteReader();
        while (dr.Read())
        {

            cmbWaiter.Items.Add(dr["name"]);

        }

        dr.Close();
        cmd = null;
        con.Close();

    }

服务员状态的保存按钮上的编码=分配按钮上为true:

 private void btnAllocate_Click(object sender, EventArgs e)
 {
          cmd = new SqlCommand("update  waiterentry2 set status='true'  where name=@name", con);
          cmd.Parameters.AddWithValue("name", dgvDetails.Rows[i].Cells[0].Value);
          cmd.ExecuteNonQuery();
          con.Close();
 }

问题是更改数据库后,您没有刷新或重新加载组合框数据绑定。

我将按如下所示重构您的代码,并在数据库更新后调用load data方法。

private void frmTableAllotment_Load(object sender, EventArgs e)
{
   dtTmPkr.Value = System.DateTime.Now;
   LoadComboBox();
}

private void btnAllocate_Click(object sender, EventArgs e)
{
    cmd = new SqlCommand("update  waiterentry2 set status='true'  where name=@name", con);
    cmd.Parameters.AddWithValue("name", dgvDetails.Rows[i].Cells[0].Value);
    cmd.ExecuteNonQuery();
    con.Close();
    LoadComboBox();
}

private void LoadComboBox()
{
    while(cmbWaiter.Items.Count >0)
         cmbWaiter.Items.RemoveAt(0);

    cmd = new SqlCommand("Select name from waiterentry2 where status='false'", con);
    con.Open();
    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
        cmbWaiter.Items.Add(dr["name"]);
    }

    dr.Close();
    cmd = null;
    con.Close();
}

尝试在btnAllocate_Click事件中成功执行数据库操作后调用您以表单加载方式编写的代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM