[英]The Data Bound ComboBox doesn't update until the application is restarted
using (SqlConnection con = new SqlConnection(cons))
{
con.Open();
using (SqlCommand com = new SqlCommand("INSERT INTO Dealers (DealerId,DealerName) values (NEXT VALUE FOR Dealers_DealerId_SEQ,@dname)", con))
{
com.Parameters.AddWithValue("@dname", this.ComboText.Text.ToString());
com.ExecuteNonQuery();
}
con.Close();
}
该代码更新了向combox提供数据的表。 它会很好地更新数据库,但不会更新应用程序下拉列表,直到重新启动应用程序。 任何帮助将不胜感激。
this.Dealers.DataSource = this.dealersBindingSource; this.Dealers.DisplayMember = "DealerName"; this.Dealers.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.Dealers.Name = "Dealers"; this.Dealers.Size = new System.Drawing.Size(121, 21); this.Dealers.ValueMember = "DealerName";
这是与组合框有关的代码。
上面显示的代码仅更新数据库。 我不知道您的数据源的外观,但是无论如何您都必须将其重新分配给下拉控件。
如果您的数据源是List<T>
则将新项与数据库同时添加到列表中,或者从数据库中重新加载列表。 如果您将相同的列表重新分配给DataSource
,则必须先将null
分配给DataSource
,否则该下拉列表将不会注意到更改。
您也可以使用BindingList
。 对BindingList
更改将自动更新下拉列表。
如果数据源是数据集,则必须重新查询该数据集,即,必须从数据库中重新读取数据。
您需要重新加载组合框。
假设您使用此方法填充组合框
public void LoadCb()
{
SqlConnection cn = new SqlConnection("connectionstring");
SqlDataAdapter da = new SqlDataAdapter("select DealerId, DealterName from Dealers", cn);
DataTable dt = new DataTable();
da.Fill(dt);
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "DealerName";
comboBox1.ValueMember = "DealerId";
}
然后在代理商表中插入值后必须调用LoadCb方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.