Форма для просмотра иерархических данных

прародительские данные представлены сеткой в

Показано приложение с двумя уровнями привязки «ведущий-детализация», что означает наличие трех каскадированных источников привязки. Прародительские данные представлены сеткой в верхней части формы, которая привязана к источнику привязки, чьим источником данных является таблица GrandParentSet В типизированном наборе данных, генерированном по схеме на рис. 4.2. Прародительская таблица, две ее дочерних таблицы-сиблинга и таблица-внук были заполнены примерными данными, чтобы продемонстрировать автоматическую фильтрацию в действии. Первая и вторая дочерние таблицы имеют внешние ключи, связывающие их с данными прародительской таблицы, а таблица-внук имеет внешние ключи, связывающие ее с первым сиблингом. При выборе строки в таблице GrandParentSet Таблицы-сиблинги обновляются так, чтобы показывать лишь строки, соотнесенные с текущей выбранной строкой в прародителе. Аналогичным образом, при выборе строки в первой таблице-сиб — линге таблица-внук обновляется, отображая только данные строк, относящихся к выбранной строке родителя.

Все это достигается каскадированием источников привязки. Код, организующий привязку, показан на

Метод InitData Программно заполняет набор данных несколькими строками на каждую таблицу, устанавливая значения внешних ключей от дочерних таблиц к родительским таблицам так, чтобы они образовали привязку «ведущий-детализация». Как легко видеть, для каждой сетки данных имеется отдельный источник привязки, и все они организованы, как описывалось выше. Источник привязки наивысшего уровня для всей родительской иерархии имеет источником данных таблицу GrandParentSet. Для первого и второго дочерних источников привязки источником данных является прародительский источник привязки, а в их свойстве DataMember Установлено имя отношения, связывающего дочернюю таблицу с родительской. Например, для первого сиблинга это отношение FK_GrandPa — Rentset FirstsiblingSet. Внучатый источник привязки устанавливается так, что его источником данных является первый дочерний источник привязки, а в его свойстве DataMember Установлено отношение FK_FirstSi — BlingSet_GrandChildSet. Аналогичный подход с каскадированием источников привязки можно использовать для привязки коллекций объектов, имеющих иерархическую структуру. Взгляните на определения объектов в листинге 4.3.