Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как заполнить ComboBox данными из БД C#(WPF)

Gg Ученик (26), на голосовании 5 месяцев назад
Привет! Я пытаюсь получить данные из столбца навзаниеОтделов из таблицы Отделы в БД через C# используя библиотеку WPF и заполнить этими названиями ComboBox, но по итогу у меня ComboBox пустой
   private void FillComboBox() 
{
try
{
// Запрос для выборки
string sqlCommand = "SELECT названиеОтдела FROM Отделы";

// Создание команды для выполнения запроса
SqlCommand command = new SqlCommand(sqlCommand, sqlCnct);

// Выполнение запроса и получение результата
SqlDataReader reader = command.ExecuteReader();

// Очистка ComboBox перед добавлением новых значений
Deportaments.Items.Clear();

// Добавление значений в ComboBox
while (reader.Read())
{
Deportaments.Items.Add(reader["названиеОтдела"].ToString());
}

// Закрытие ридера
reader.Close();
}
catch (Exception ex)
{
// Обработка исключений, если не удалось выполнить запрос
MessageBox.Show("Ошибка при заполнении ComboBox: " + ex.Message);
}
}

// Вызов FillComboBox() в методе Window_Loaded
private void Window_Loaded(object sender, RoutedEventArgs e)
{
FillComboBox();
}
Голосование за лучший ответ
Вадим Ануфриев Мастер (1762) 6 месяцев назад
Ваш код выглядит правильно, но есть несколько моментов, которые следует учитывать:

Убедитесь, что соединение с базой данных sqlCnct у вас корректно открыто перед выполнением запроса.
Проверьте, есть ли данные в столбце названиеОтдела таблицы Отделы. Возможно, он пустой, и поэтому ComboBox остается пустым.
Убедитесь, что Deportaments — это ваш ComboBox, и он связан с этим кодом.
Попробуйте добавить небольшую задержку между очисткой ComboBox и добавлением новых элементов, чтобы дать время для загрузки данных.
Вот небольшое изменение вашего кода с добавлением задержки:
 using System.Threading.Tasks; // Добавьте это в начало файла, чтобы использовать задержку 

private async void FillComboBox()
{
try
{
// Запрос для выборки
string sqlCommand = "SELECT названиеОтдела FROM Отделы";

// Создание команды для выполнения запроса
SqlCommand command = new SqlCommand(sqlCommand, sqlCnct);

// Выполнение запроса и получение результата
SqlDataReader reader = command.ExecuteReader();

// Очистка ComboBox перед добавлением новых значений
Deportaments.Items.Clear();

// Задержка на 100 миллисекунд для обеспечения времени на очистку
await Task.Delay(100);

// Добавление значений в ComboBox
while (reader.Read())
{
Deportaments.Items.Add(reader["названиеОтдела"].ToString());
}

// Закрытие ридера
reader.Close();
}
catch (Exception ex)
{
// Обработка исключений, если не удалось выполнить запрос
MessageBox.Show("Ошибка при заполнении ComboBox: " + ex.Message);
}
}
Если после этого ComboBox все равно остается пустым, проверьте указанные выше моменты, чтобы выяснить, в чем проблема.
Похожие вопросы