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

Объект CardDataSource является уже непосредственным источником данных для элементов управления. Он позволяет работать с коллекцией данных карточек (CardDataCollection).

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

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

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

В выпадающем списке представлены все имеющиеся в проекте объекты-сессии (SessionSource), из которых нужно выбрать тот, который будет использован для получения данных. При выборе конкретного объекта сессии, в поле "Connection string" отображаются детальные сведения о выбранном соединении. Кнопка "New session source" позволяет создать новый объект сессии, если он ещё не добавлен в проект.

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

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

В дереве приведены все типы карточек, зарегистрированные в текущей базе данных, сгруппированные согласно своим библиотекам. Источник данных CardDataSource может работать только с одним конкретным типом единовременно.

Для выбранного типа карточек, источник данных CardDataSource может получить либо все имеющиеся в базе данных экземпляры карточек такого типа (по аналогии с системной веткой "Карточки" в Windows-клиенте), либо ограничить количество возвращаемых карточек по фильтру (поисковому запросу).

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

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

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

Указание поискового запроса для отбора карточек
Рисунок 3. Указание поискового запроса для отбора карточек

Можно выбрать уже готовый запрос из числа сохранённых, или ввести непосредственно текст запроса в виде XML — для этого необходимо установить курсор на специальную ветку (Custom), тогда в правой части станет доступным элемент управления для редактирования поискового запроса.

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

После указания запроса и нажатия кнопки Finish, конфигурирование источника данных завершается. Впоследствии все установленные при помощи мастера параметры можно изменить — в окне свойств (Properties) в Visual Studio, или в run-time в виде свойств объекта CardDataSource.

Доступен следующий набор свойств:
  • CardTypeId (Guid) — идентификатор типа карточек.

  • SessionSource — объект сессии (соединение) для источника данных.

  • QueryString (string) — строка поискового запроса.

После создания и настройки источника данных можно приступать к привязке готового источника к элементу управления. Рассмотрим пример использования объекта CardDataSource в качестве источника данных для стандартного элемента управления ComboBox.

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

ComboBox
Рисунок 4. "ComboBox" и "CardDataSource"
Для этого требуется задать значения следующих свойств:
  • Data Source — источник данных для элемента управления (выбираем созданный и настроенный CardDataSource).

  • Dispay Member — поле источника данных, значение которого будет использоваться для отображения в элементе управления.

    Поскольку в данном случае используется источник данных карточек Docsvision (CardDataSource), то в качестве полей данных возвращается набор стандартных системных атрибутов карточек (описание, дата создания, дата изменения, и т.д.).

  • Value member — поле источника данных, которое будет определять значение выбранного элемента. В случае CardDataSource, уместно в качестве такого поля использовать идентификатор карточки (ID).

  • Selected Value — выбранное по умолчанию значение в списке.

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