Для представления данных, получаемых из разных источников и логически связанных между собой по одному или нескольким внешним ключам, используется визуальная модель Master-Detail (linkage).
Такая модель содержит в себе описание до четырех, связанных между собой, дочерних визуальных подмоделей, типом которых может служить как простая Query-модель, так и модель класса Master-Detail. Количество встроенных стилей (схем размещения) модели Master-Detail позволяет структурировать и представлять имеющиеся данные, практически, в любом необходимом виде. При этом, независимо от уровня вложенности, сохраненяются все фукциональные возможности Query-модели, как базового компонента модели Master-Detail. Все подмодели связаны между собой отношением parent-child, а также имеют прямую связь со своим владельцем - моделью-контейнером.
На следующем рисунке представлен результат работы модели Master-Detail со стилем 30 (Схема размещения 1-left-2-right), содержащей в своем составе три субмодели - 1) Query (left), 2) Query (top), 3) Linkage (bottom):
На следующем рисунке представлено окно редактора этой модели:
Модель Master-Detail ни содержит в своей структуре непосредственного описания принимаемых извне аргументов. Тем не менее, передача значений таких аргументов возможна - для этого в качестве имен необходимо использовать имена аргументов первой подмодели (Master).
Свойства модели Master-Detail
Свойство | Описание |
Код | Уникальный код (обозначение) модели |
Наименование | Полное наименование модели. Отображается в качестве заголовка окна-подложки. |
Стиль | Стиль представления, определяющий количество и расположение вложенных подмоделей. Подробное описание стилей приведено в следующем разделе. |
Справка | Код темы из справочного файла |
Master, Detail-1, Detail-2, Detail-3 | |
Модель | Тип модели: Query, Linkage (Master-Detail) |
URI | Идентификатор ресурса в формате: <class-controller>.<model>[?<key>=<value>[&...]] |
Родитель | Ссылка на модель-родитель. Может принимать одно из следующих значений: Master, Detail1, Detail2, ParentModel. Значение ParentModel устанавливает связь выбранной подмодели с моделью, из которой производилось открытие данной модели MasterDetail |
Аргументы |
Описание передаваемых/получаемых параметров в формате: <parent-column1>:<child-column1>, <parent-column2>:<child-column2>... |
Update style | Способ и порядок обновления записей в подмоделе |
Delete style | Способ и порядок удаления записей в подмоделе |
Зависит от статуса | Зависимость от текущего состояния родительской модели. Если такая модель присутствует, состояние подмодели будет автоматически меняться в соответствии с текущим статусом модели-родителя |
Отобразить | Вычисляемое выражение, значение которого отображается для каждой строки (доступно для ограниченного числа стилей) |
Стили модели Master-Detail
Как уже говорилось ранее, стиль модели Master-Detail определяет схему размещения (layout) ее подмоделей на рабочем окне. При этом, на функциональное поведение модели во время выполнения стиль, практически, не влияет. В любой момент разработчик может изменить схему размещения визуальных компонентов модели-владельца без потери заложенной в нее бизнес-логики.
В следующей таблице приведены возможные стили модели Master-Detail на момент публикации этого документа.
Код | Схема | Описание |
Две подмодели | ||
21 | Две Query-модели , расположенные вертикально | |
22 | Две Query-модели, расположенных горизонтально | |
23 | Две модели любого типа, расположенные в TabView | |
24 | Две Query-моделиw, отображаемых в модальном Wizard-окне | |
25 | DataWindow и TabView, расположенные вертикально | |
26 | DataWindow и TabView, расположенные горизонтально | |
Три подмлдели | ||
30 | Одна модель слева, и две модели справа, последняя из которых - Master/Detail | |
31 | Три вертикально расположенные Query модели | |
32 | Одна модель сверху и две снизу | |
33 | Три горизонтально расположенные Query модели | |
34 | Одна модель слева и две справа | |
35 | Три модели любого типа, расположенные в TabView | |
36 | Три модели в стиле OutLook | |
37 | Две модели слева и одна справа | |
38 | Две модели сверху и одна снизу | |
39 | Три Query-модели, отображаемые в модальном Wizard-окне | |
Четыре подмодели | ||
41 | Четыре модели любого типа, расположенные в TabView | |
42 | Четыре модели в стиле OutLook | |
43 | Четыре Query-модели, отображаемые в модальном Wizard-окне | |
44 | Одна модель слева и три справа | |
45 | Одна модель сверху и три снизу |