Практическое руководство. Создание таблицы подстановки для элемента управления ComboBox, ListBox или CheckedListBox в Windows Forms
Иногда полезно отображать данные в удобном для пользователя формате в форме Windows Forms и при этом сохранять их в формате, требуемом в используемой программе. Например, в бланке заказа продуктов питания могут отображаться элементы меню с названиями продуктов в списке. Однако таблица данных регистрации заказа будет содержать уникальные идентификаторы, представляющие продукты питания. В таблице ниже представлен пример хранения и отображения данных бланка заказа продуктов питания.
OrderDetailsTable
OrderID | ItemID | Количество |
---|---|---|
4085 | 12 | 1 |
4086 | 13 | 3 |
ItemTable
ИД | Имя |
---|---|
12 | Картофель |
13 | Цыпленок |
В этом сценарии одна таблица OrderDetailsTable содержит фактические сведения, важные с точки зрения отображения и сохранения. Однако с целью экономии места они представлены в неудобном для восприятия виде. Другая таблица ItemTable содержит только данные, связанные с представлением, а именно сведения о том, какой код соответствует тому или иному продукту. Информации о фактических заказах продуктов в ней нет.
Таблица ItemTable связана с элементом управления ComboBox, ListBox или CheckedListBox с помощью трех свойств. Свойство DataSource
содержит имя таблицы. Свойство DisplayMember
содержит столбец данных таблицы, который должен отображаться в элементе управления (название продукта). Свойство ValueMember
содержит столбец данных таблицы с сохраняемыми данными (идентификатор).
Таблица OrderDetailsTable связана с элементом управления с помощью коллекции привязок, доступных через свойство DataBindings. При добавлении объекта привязки в коллекцию свойство элемента управления связывается с определенным элементом данных (столбцом кодов) в источнике данных (таблице OrderDetailsTable). Когда в элементе управления делается выбор, в этой таблице сохраняются вводимые данные.
Создание таблицы подстановок
Добавьте на форму элемент управления ComboBox, ListBox или CheckedListBox.
Произведите подключение к источнику данных.
Установите связь между данными в двух таблицах. См. раздел Знакомство с объектами DataRelation.
Задайте следующие свойства. Их можно задать в коде или в конструкторе.
Свойство Параметр DataSource Таблица, в которой содержатся сведения о том, какому коду соответствует тот или иной элемент. В приведенном выше сценарии это ItemTable
.DisplayMember Столбец таблицы источника данных, который необходимо отобразить в элементе управления. В приведенном выше сценарии это "Name"
(для задания в коде используйте кавычки).ValueMember Столбец таблицы источника данных, который содержит сохраняемую информацию. В приведенном выше сценарии это "ID"
(для задания в коде используйте кавычки).В процедуре вызовите метод Add класса ControlBindingsCollection для привязки свойства SelectedValue элемента управления к таблице, в которой регистрируются данные, вводимые в форме. Кроме того, вместо кода это можно сделать в конструкторе с помощью свойства DataBindings элемента управления в окне Свойства. В приведенном выше сценарии это
OrderDetailsTable
, а столбец —"ItemID"
.ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID")
listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID");
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по