Как заполнить combobox из базы данных c
Перейти к содержимому

Как заполнить combobox из базы данных c

  • автор:

Как заполнить combobox из базы данных c

Кроме прямого добавления элементов в коллекцию Items компонентов ListBox и ComboBox мы также можем использовать механизм привязки данных.

Привязка данных в ListBox и ComboBox реализуется с помощью следующих свойств:

  • DataSource : источник данных — какой-нибудь массив или коллекция объектов
  • DisplayMember : свойство объекта, которое будет использоваться для отображения в ListBox / ComboBox
  • ValueMember : свойство объекта, которое будет использоваться в качестве его значения
public partial class Form1 : Form < public Form1() < InitializeComponent(); Listphones = new List < new Phone < Name="Samsung Galaxy Ace 2", Year=2012>, new Phone < Name="Samsung Galaxy S4", Year=2013>, new Phone < Name="iPhone 6", Year=2014>, new Phone < Name="Microsoft Lumia 435", Year=2015>, new Phone < Name="Xiaomi Mi 5", Year=2015>>; listBox1.DataSource = phones; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged; > void listBox1_SelectedIndexChanged(object sender, EventArgs e) < // получаем id выделенного объекта int // получаем весь выделенный объект Phone phone = (Phone)listBox1.SelectedItem; MessageBox.Show(id.ToString() + ". " + phone.Name); >> class Phone < public int Id < get; set; >public string Name < get; set; >public int Year < get; set; >>

Итак, на форме у нас есть список ListBox с именем listBox1. В коде имеется класс Phone с тремя свойствами, объекты которого мы хотим выводить в список. В отличие от предыдущих тем эта задача сложнее, так как раньше мы выводили обычные строки, тут же у нас сложные объекты.

Для вывода используем механизм привязки. Сначала устанавливаем список телефонов в качестве источника данных:

listBox1.DataSource = phones;

Затем устанавливаем в качестве отображаемого свойства свойство Name класса Phone, а в качестве свойства значения — свойство Id:

listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id";

Значение отображаемого свойства мы затем увидим в списке. Оно будет представлять каждый отдельный объект Phone.

С помощью же свойства значения, которым является свойство Id, мы можем упростить работу с источником данных. В данном случае оно не играет большой роли. Но если бы мы использовали в качестве источника данных некоторый набор объектов из базы данных, то с помощью id нам было проще удалять, обновлять и взаимодействовать с базой данных.

И теперь если мы выделим какой-то объект, то свойство SelectedItem элементы ListBox будет содержать объект Phone, у которого мы можем получить значения свойств:

Phone phone = (Phone)listBox1.SelectedItem; string name = phone.Name;

А выделенное значение, то есть значение свойства Id выделенного телефона, будет находиться в свойстве SelectedValue .

И если мы запустим приложение, то увидим все отображаемые телефоны:

Привязка в Windows Forms

Все то же самое характерно и для элемента ComboBox. Пусть кроме ListBoxa на форме есть ComboBox:

public partial class Form1 : Form < public Form1() < InitializeComponent(); Listphones = new List < new Phone < Name="Samsung Galaxy Ace 2", Year=2012>, new Phone < Name="Samsung Galaxy S4", Year=2013>, new Phone < Name="iPhone 6", Year=2014>, new Phone < Name="Microsoft Lumia 435", Year=2015>, new Phone < Name="Xiaomi Mi 5", Year=2015>>; comboBox1.DataSource = phones; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Id"; comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; > void comboBox1_SelectedIndexChanged(object sender, EventArgs e) < Phone phone = (Phone)comboBox1.SelectedItem; listBox1.Items.Add(phone); >> class Phone < public int Id < get; set; >public string Name < get; set; >public int Year < get; set; >>

Здесь также для комбобокса устанавливается привязка, а также отображаемое свойство и свойство значения. Кроме того, здесь обрабатывается событие выбора элемента в комбобоксе так, чтобы выбранный элемент попадал в ListBox.

Привязка даных в ComboBox

В отличие от ListBoxa ComboBox имеет три свойства для обработки выделенного объекта:

  • SelectedItem : выбранный элемент
  • SelectedValue : значение свойства значения, в данном случае свойство Id
  • SelectedText : значение свойства отображение, в данном случае свойство Name класса Phone

Практическое руководство. Связывание элемента управления ComboBox или ListBox с данными в Windows Forms

Вы можете привязать ComboBox и ListBox к данным для выполнения таких задач, как просмотр данных в базе данных, ввод новых данных или изменение существующих данных.

Привязка элемента управления ComboBox или ListBox

  1. Присвойте свойству DataSource объект источника данных. Возможные источники данных включают привязку BindingSource к данным, таблице данных, представлению данных, набору данных, диспетчеру представлений данных, массиву или любому классу, реализующему интерфейс IList. Дополнительные сведения см. в разделе Источники данных, поддерживаемые Windows Forms.
  2. Если выполняется привязка к таблице, присвойте свойству DisplayMember имя столбца в источнике данных. — или — При привязке к IList, задайте для элемента отображения общедоступное свойство типа в списке.
Private Sub BindComboBox() ComboBox1.DataSource = DataSet1.Tables("Suppliers") ComboBox1.DisplayMember = "ProductName" End Sub 
private void BindComboBox()

Примечание. При привязке к источнику данных, который не реализует интерфейс IBindingList, например ArrayList, данные привязанного элемента управления не будут обновляться при обновлении источника данных. Например, если поле со списком привязано к ArrayList, а данные добавляются в ArrayList, эти новые элементы не будут отображаться в поле со списком. Однако можно принудительно обновить поле со списком, вызвав методы SuspendBinding и ResumeBinding в экземпляре класса BindingContext, к которому привязан элемент управления.

См. также

  • ComboBox
  • ListBox
  • Привязка данных Windows Forms
  • Привязка данных и Windows Forms
  • Создание списка для выбора элементов в Windows Forms

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Как заполнить combobox из базы данных c

Регистрация: 19.07.2013

Сообщений: 1

заполнение combobox из бд

Всем добрый день!
Недавно начала изучать с#, и вот возник вопрос. Надеюсь, вы мне поможете разобраться с этим )
Моя задача, отфильтровать датагридвью с помощью выпадающего списка. Т.е. я выбираю значение в комбобоксе, а информация по этому значению вылазит в датагрид-е.
Проблема в том, что я не до конца понимаю, как заполнить комбобокс из базы данных.. знаю, что надо использовать DataSource, DisplayMember и ValueMember. А куда, что и как.. не очень понятно)
Особенно , что касается датаадаптера и дата тэйбл)

Была бы очень признательна, если бы вы помогли мне разобраться, а в особенности за пример кода)

Kira_Polyakova
Посмотреть профиль
Найти ещё сообщения от Kira_Polyakova
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заполнение textbox по данным из combobox Владимир2222 Microsoft Office Excel 8 02.04.2013 08:20
заполнение combobox с другого листа caught.let Microsoft Office Excel 3 14.03.2012 21:06
Заполнение combobox. NicBor Microsoft Office Word 4 12.11.2010 14:05
ComboBox и заполнение базы данных InterBase anechka3107 БД в Delphi 2 26.05.2010 00:42
Заполнение ComboBox датами segail Microsoft Office Excel 9 12.01.2010 21:47

Бедросова Юлия

этот блог посвящен задачам, с которыми сталкиваюсь в своей профессиональной деятельности.

Как заполнить ComboBox значениями из базы данных

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

private SqlConnection cn = new SqlConnection(Properties.Settings.Default.oborudConnectionString);
private DataSet myDS = new DataSet();

dAdapt = new SqlDataAdapter(«select * from имя_таблицы», cn);
dAdapt.Fill(myDS, «имя_таблицы»);
comboBox1.Items.Clear();
int i = 0;
for (i = 0; i

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Комментарии

Анонимный написал(а)…
и как указать нужный для связки столбец.

Популярные сообщения из этого блога

Настройка почты через biz.mail.ru в БитриксВМ

Недавно настраивая отправку почты в БитриксВМ через ящик домена, который хостится на biz.mail.ru согласно официальной инструкции https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&LESSON_ID=2946 , я столкнулась с проблемой, что письма не уходят с сервера. Зайдя в лог по адресу: /home/bitrix/msmtp_default.log я увидела там ошибку: errormsg=’the server sent an empty reply’ exitcode=EX_PROTOCOL

Git обновить текущую ветку из master

Если разработка велась в ветке, и за время этой разработки ветка master сильно изменилась, лучше не вливать ветку сразу в мастер, а сначала влить мастер в ветку – чтобы предварительно протестировать. Для этого нужно переключиться на ту ветку, в которую мы будем вливать мастер, а затем выполнить команду git pull origin master Cкорее всего, после этого возникнут конфликты – гит скажет об этом. Чтобы просмотреть все файлы, в которых произошли конфликты, нужно выполнить команду git status После разрешения конфликтов, нужно сделать коммит, а потом снова выполнить git pull origin master Таким же образом можно периодически вливать в ветку новые изменения из мастера, если нужно, чтобы ветка не сильно «отошла» от основной версии проекта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *