Недавно добавленные данные из базы данных не отображаются в ComboBox - PullRequest
0 голосов
/ 05 октября 2018

Пожалуйста, помогите, когда я вставляю новые данные в базу данных, они не отображаются в поле со списком, пока я не перезапущу программу.Чего-то не хватает?

        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 голосов
/ 05 октября 2018

Вы можете сделать это:

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";
}

В идеале вы должны указать идентификатор таблицы и поместить его в свойство ValueMember.Вы вызываете Bind ToComboBox один раз и просто вызываете RefreshData (), когда есть изменения в базе данных.Должно автоматически обновиться содержимое выпадающего списка.

0 голосов
/ 05 октября 2018

Изменить CmbSupp.Items.Clear() на CmbSupp.Items = null; это маленькая ошибка, вы должны установить нулевое значение и сброс данных;Попробуйте;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...