簡體   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