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

时间:2013-09-05 10:46:55

标签: c#

My Combobox包含服务员的名字。 当我将表格分配给选定的服务员时,其状态变为真,但组合框项目不会改变。

在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();

    }

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

 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();
 }

2 个答案:

答案 0 :(得分:0)

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

我会将您的代码考虑在内,并在数据库更新后调用load数据方法。

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();
}

答案 1 :(得分:0)

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