Практическое руководство. Создание таблицы подстановок с помощью компонента BindingSource в формах Windows Forms
Таблица подстановки — это таблица данных, в одном из столбцов которой отображаются данные из записей в связанной таблице. В следующих процедурах для отображения поля с отношением по внешнему ключу от родительской к дочерней таблице используется элемент управления ComboBox.
Чтобы вы могли представить это отношение, приведем пример родительской и дочерней таблицы.
CustomersTable (родительская таблица)
| CustomerID | CustomerName | 
|---|---|
| 712 | Павел Кох | 
| 713 | Тамара Иванова | 
OrdersTable (дочерняя таблица)
| OrderID | OrderDate | CustomerID | 
|---|---|---|
| 903 | 12 февраля 2004 г. | 712 | 
| 904 | 13 февраля 2004 г. | 713 | 
В данном случае одна таблица, CustomersTable, содержит актуальную информацию, которую необходимо отобразить и сохранить. Для экономии места в таблице опущены пояснения. Другая таблица, OrdersTable, содержит только внешнюю информацию о том, какой номер идентификатора клиента соответствует тем или иным данным и идентификатору заказа. При этом имена клиентов не указываются.
Чтобы создать таблицу подстановки, в элементе управления ComboBox устанавливаются четыре важных свойства.
- Свойство DataSource содержит имя таблицы. 
- Свойство DisplayMember содержит столбец данных таблицы, из которого нужно взять текст для элемента управления (имя клиента). 
- Свойство ValueMember содержит столбец данных таблицы, в которой хранится информация (номер идентификатора в родительской таблице). 
- Свойство SelectedValue предоставляет значение подстановки для дочерней таблицы на основании свойства ValueMember. 
Представленные ниже процедуры показывают, как разместить форму в виде таблицы подстановки и привязать данные к ее элементам управления. Для успешного завершения процедур необходим источник данных с родительской и дочерней таблицами, связанными по внешнему ключу, как это уже говорилось выше.
Создание пользовательского интерфейса
- Из элементов, перетащите ComboBox на форму. - Этот элемент управления будет отображать столбец из родительской таблицы. 
- Перетащите другие элементы управления для отображения сведений из дочерней таблицы. Формат данных в таблице следует определить, исходя из выбранных элементов управления. Дополнительные сведения см. в разделе Функциональная классификация элементов управления Windows Forms. 
- Перетащите в форму элемент управления BindingNavigator. Это позволит перемещаться по данным в дочерней таблице. 
Подключение к данным и их привязка к элементам управления
- Выберите элемент управления ComboBox и нажмите на глиф "Быстрые действия", чтобы открыть одноименное диалоговое окно. 
- Выберите элемент Использовать элементы, привязанные к данным. 
- Щелкните стрелку рядом с раскрывающимся списком Источник данных. Если источник данных ранее был настроен для проекта или формы, он отобразится. В противном случае выполните следующие действия (в этом примере используются таблицы Customers и Orders учебной базы данных Борей, а ссылки на них приводятся в круглых скобках). - Щелкните элемент Добавить источник данных проекта, чтобы подключиться к данным и создать источник данных. 
- На странице приветствия Мастер настройки источника данных нажмите кнопку Далее. 
- На странице Выбор типа источника данных выберите элемент База данных. 
- На странице Выбор подключения к базе данных выберите тип подключения данных из списка доступных подключений. Если необходимое подключение данных недоступно, выберите элемент Создать подключение, чтобы создать новое подключение данных. 
- Нажмите кнопку Да, сохранить подключение, чтобы сохранить строку подключения в файле конфигурации приложения. 
- Выберите объекты базы данных, чтобы перенести их в приложение. В данном случае выберите родительскую и дочернюю таблицы (например, таблицы Customers и Orders) с отношением по внешнему ключу. 
- Если необходимо, замените имя набора данных по умолчанию. 
- Нажмите кнопку Готово. 
 
- В раскрывающемся списке Отобразить участника выберите имя столбца (например, ContactName) для его отображения в поле со списком. 
- В раскрывающемся списке Значение участника выберите столбец (например, CustomerID), чтобы выполнить операции подстановки в дочерней таблице. 
- В раскрывающемся списке Выбранное значение перейдите к элементу Источники данных проекта и только что созданному набору данных, который содержит родительскую и дочернюю таблицы. Выберите такое же свойство дочерней таблицы, которое является значением участника родительской таблицы (например, Orders.CustomerID). Будут созданы и добавлены в форму соответствующие BindingSource, набор данных и компоненты адаптера таблицы. 
- Свяжите элемент управления BindingNavigator с элементом BindingSource дочерней таблицы (например, - OrdersBindingSource).
- Свяжите элементы управления, кроме ComboBox и BindingNavigator, с полями сведений из элемента BindingSource дочерней таблицы (например, - OrdersBindingSource), которые необходимо отобразить.