繁体   English   中英

在重新启动应用程序之前,数据绑定组合框不会更新

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM