[英]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.