Категории
Войти
Поиск
Реклама
Полезное:
Новые статьи
Опечатка?
Выделите текст и нажмите Shift+Enter.
И мы в ближайшее время ее исправим!
Счетчики
| Привязка объектов Order и Customer к элементам управления формы |
|
Чтобы продемонстрировать использование этих объектных типов с привязанными элементам управления, я собрал форму, показанную на 9.1. Для добавления элементов управления и компонентов я воспользовался конструктором, но все остальное сделано программно - здесь генерированный конструктором код не делает ничего особенного, кроме объявления переменных для элементов управления и компонентов, которые вы видите в конструкторе на 9.1. Две сетки m_CustomersGrid и mOrdersGrid, соответственно верхняя и нижняя, предназначены для показа списка заказчиков в верхней сетке и списка заказов для выбранного заказчика в нижней. Для подключения сеток будут использоваться два источника привязки m_CustomersBinding-Source И m_OrdersBindingSource. Источник привязки mCustomersBindingSource будет привязан непосредственно к коллекции объектов Customer, конкретнее, коллекции List<Customer>. Источник m_OrdersBindingSource будет привязан к mCustomersBindingSource, установленному в качестве его свойства DataSource, с DataMember, установленным на Orders — свойство Orders объекта Customer, которое само есть List<Order> и, таким образом, реализует IList, что делает его пригодным для привязки к таблице. Код формы, выполняющий все эти подключения и привязку к примерным данным, выглядит подобно показанному в листинге. Конструктор формы устанавливает DataSource каждой сетки на соответствующий источник привязки и устанавливает свойства AutoGenerateColumns в true. Дальнейшая инициализация привязки данных должна быть отложена до действительного заполнения данными, так как невозможно установить отношения типа ведущий-детализация или ссылаться на компоненты данных в источнике данных, пока нужный компонент данных не будет заполнен. Метод OnGetList вызывается по событию щелчка на кнопке от формы и обращается к входящему в проект тестовому классу, содержащему определения объектов Customer и order, показанные выше. Возвращаемый список заказчиков устанавливается в качестве источника данных для m_CustomersBindingSource, после чего метод устанавливает источник и компонент данных дочернего m_OrdersBindingSource для организации привязки «ведущий-детализация». Получается схема привязки данных, показанная на 9.2. Каждая сетка на 9.2 привязана к своему собственному источнику привязки через свойство DataSource, которое указывает на соответствующий BindingSource. Источник привязки заказчиков является тем источником, что действительно привязан к источнику данных - его свойство DataSource установлено на List<Customer>, возвращаемый методом GetTestCustomers. Его свойство DataMember остается нулевым. Свойство DataSource источника привязки заказов установлено на источник привязки заказчиков, a DataMember - на orders. Тем самым организуется привязка вида ведущий-детализация, так что будет отображаться только коллекция заказов для того объекта Customer, который является текущим в коллекции, поддерживаемой родительским источником привязки.
Newer news items:
Older news items:
|
