来自数据库的新添加的数据未显示在ComboBox上

时间:2018-10-05 05:06:46

标签: c# sql combobox

当我向数据库中插入新数据时,请帮忙,除非重新启动程序,否则它不会显示在comboBox中。缺少了什么吗?

        CmbSupp.Items.Clear();
        con.Open();
        Refresh();
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select SupplierName from SuppTbl";
        cmd.ExecuteNonQuery();
        DataTable dt = new DataTable();
        SqlDataAdapter dp = new SqlDataAdapter(cmd);
        dp.Fill(dt);
        foreach (DataRow dr in dt.Rows)
        {
            CmbSupp.Items.Add(dr["SupplierName"].ToString());
        }
        con.Close();

提前谢谢!

2 个答案:

答案 0 :(得分:0)

更改 CmbSupp.Items.Clear() 前往CmbSupp.Items = null; 这是一个小错误,您必须设置Null值并重置数据; 试试吧;

答案 1 :(得分:0)

您可以这样做:

DataTable dt = new DataTable();
private void RefreshData()
{
    dt.Clear();
    con.Open();
    Refresh();
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select SupplierName from SuppTbl";
    cmd.ExecuteNonQuery();
    SqlDataAdapter dp = new SqlDataAdapter(cmd);
    dp.Fill(dt);
    con.Close();
    cmd.Dispose();
}

private void BindToComboBox()
{
    CmbSupp.DataSource = dt;
    CmbSupp.ValueMember = "SupplierName";
    CmbSupp.DisplayMember = "SupplierName";
}

理想情况下,您包括表的ID并将其放在ValueMember属性中。您只需调用Bind ToComboBox,然后在数据库中发生更改时仅调用RefreshData()。它应该自动更新组合框的内容。