Источник данных "RowDataSource"

Источник данных RowDataSource предназначен для работы с набором строк секции карточки (RowDataCollection). При этом он позволяет не только просматривать, но и изменять, добавлять и удалять строки в секции.

Как и в случае источника CardDataSource, первичную конфигурацию источника данных можно выполнить при помощи мастера.

Первый шаг мастера позволяет указать сессию, с которой будет работать источник данных.

На втором шаге мастер предлагает указать секцию, строки из которой будет получать источник данных. Допускается работа с секциями любых типов (плоская, табличная, древовидная).

Мастер настройки "RowDataSource"
Рисунок 1. Мастер настройки "RowDataSource"

По умолчанию мастер предполагает, что будут использоваться все строки указанной секции. Если же требуется отфильтровать набор строк, необходимо установить флаг Add the search query string. Тогда следующий шаг мастера позволит указать поисковый запрос для отбора строк секции.

+ Дополнительный признак Get all section rows на этой же странице указывает на необходимость получения всех строк иерархической секции, без учета уровня иерархии (например, получить все подразделения и организации из справочника сотрудников).

При использовании этого признака, результирующий набор строк в источнике данных не будет доступен для добавления и удаления строк!

На следующем шаге предлагается выбрать конкретный экземпляр карточки, из которой будут получаться строки. Если выбрана секция справочника, которая всегда существует в системе в единственном экземпляре, в таком выборе нет необходимости и этот шаг можно пропустить.

Выбор ID карточки
Рисунок 2. Выбор ID карточки

Для выбора конкретной карточки можно воспользоваться кнопкой Select card. Флаг Use the card data from runtime сигнализирует о том, что для получения данных будет использоваться динамический объект, доступный через свойство CardData в контексте данной формы. В случае разработки компонента карточки, это будут данные самой этой карточки.

Наконец, последний шаг предназначен для указания запроса фильтрации данных (он становится доступен при установке флага Add the search query string). Как и в случае CardDataSource, на этом шаге можно выбрать сохранённый поисковый запрос или указать текст запроса напрямую.

После этого работа мастера завершается, и источник данных готов к использованию.

Все параметры, установленные при помощи мастера для источника данных, можно впоследствии изменить через свойства объекта RowDataSource:

  • CardInstanceID — идентификатор экземпляра карточки, из которой будут получаться строки.

  • CardTypeID — идентификатор типа карточки, из которой будут получаться строки.

  • SectionTypeID — идентификатор типа секции карточки, из которой будут получаться строки.

  • SearchQuery — текст поискового запроса для фильтрации строк.

  • ParentRowID — идентификатор родительской строки для подчиненной секции.

  • ParentTreeRowID — идентификатор родительской строки в иерархической секции.

  • SessionSource — объект сессии.

Пример использования источника данных RowDataSource: разместим на форме карточки таблицу со списком всех сотрудников из справочника сотрудников. Для этого необходимо настроить источник данных на соответствующую секцию, а также установить флаг Get all section rows, чтобы получить все строки секции независимо от уровня в иерархи.

В качестве элемента управления для работы со строками целесообразно использовать стандартный табличный элемент управления DataGridView, который позволяет не только просматривать строки, но и редактировать их. После указания источника данных для элемента управления, он автоматически получает заголовки столбцов как имена соответствующих полей секции:

Мастер настройки RowDataSource
Рисунок 3. Мастер настройки RowDataSource

Сразу после этого элемент управления готов к работе, и позволяет просматривать данные справочника сотрудников.