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";
这是与组合框有关的代码。
答案 0 :(得分:0)
上面显示的代码仅更新数据库。我不知道您的数据源看起来如何,但无论如何您都必须将其重新分配给您的下拉控件。
如果您的数据源是List<T>
,则将新项目同时添加到列表中,或者从数据库重新加载列表。如果您将同一列表重新分配到DataSource
,则必须先将null
分配给DataSource
,否则下拉列表将不会发现更改。
您还可以使用BindingList
。对BindingList
的更改将自动更新下拉列表。
如果数据源是数据集,则必须重新查询数据集,即必须重新读取数据库中的数据。
答案 1 :(得分:0)
您需要重新加载组合框。
假设您使用此方法填充组合框
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方法