0

我的 Combobox 包含服务员的姓名。当我将表分配给选定的服务员时,它的状态变为 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();
 }
4

2 回答 2

0

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

我将重构您的代码如下,并在数据库更新后调用加载数据方法。

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();
}
于 2013-09-05T10:50:25.187 回答
0

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

于 2013-09-05T10:54:23.983 回答