YouTube

 

Посмотрите наш видеоурок по Закладкам в отчете. Подписывайтесь на канал Stimulsoft и узнайте первыми о новых видеоуроках. Вопросы и предложения оставляйте в комментариях к видео.

 

 

 

Закладки предназначены для отображения структуры отчета. Также закладки используются для пометки компонента, чтобы потом можно было сделать на него ссылку при помощи гиперссылки. Для того чтобы добавить закладки в отчет, следует вызвать редактор взаимодействий и перейти на вкладку Закладки (Bookmark). На этой вкладке следует указать выражение для формирования закладок. Результат выражение, в момент построения отчета, записывается в свойство BookmarkValue. Это свойство на отображается на панели свойства, но к нему можно обращаться из кода отчета или ссылаться на него из выражений. Перед отображением отчета в окне предварительного просмотра, Stimulsoft Reports просматривает все компоненты готового отчета и заполняет дерево закладок.

 

 

 

Дерево закладок

 

Дерево закладок позволяет отобразить иерархическую структуру отчета. К примеру, было указано две закладки – одна на Master бэнде, вторая на Detail бэнде. В этом случае каждому элементу закладки Master бэнда будет соответствовать один узел дерева закладок. Все элементы закладок из Detail бэндов будут добавляться в соответствующий узел Master бэнда.

 

 

 

Формирование закладок при помощи кода

 

При помощи свойства Закладки можно сформировать достаточно сложную структуру закладок в отчете. Однако часто возможностей предоставляемых этим свойств оказывается недостаточно. К примеру, может понадобиться добавить в дерево закладок свои узлы без использования свойства Закладки. Или закладку необходимо расположить в другом уровне вложенности. Для этих целей Stimulsoft Reports предоставляет свойство Interaction.Bookmark отчета. Это невидимое свойство отчета и оно доступно только из кода. Использовать это свойство достаточно просто. К примеру, для того чтобы добавить закладку первого уровня вложенности можно использовать такой код:

 

 

Bookmark.Add("My Bookmark");

 

 

Этот код создаст такую закладку в дереве закладок:

 

 

 

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

 

 

Bookmark["My Bookmark"].Add("Bookmark Level2");

 

 

 

 

Соответственно для третьего уровня:

 

 

Bookmark["My Bookmark"]["Level2"].Add("Bookmark Level3");

 

 

 

 

Для того чтобы создать все три закладки сразу можно воспользоваться только последним приведенным примером кода. Stimulsoft Reports автоматически проверит наличие каждой из закладок в дереве и добавит недостающие. При помощи закладок может понадобиться организовать навигацию. Для того чтобы генератор отчетов мог найти соответствующие компоненты, необходимо заполнить свойство  Interaction.Bookmark этих компонентов. При этом значение свойства  Interaction.Bookmark должно совпадать с наименованием создаваемой закладки. Например, добавляем закладку:

 

 

Bookmark.Add(Customers.CompanyName);

 

 

Соответственно у компонента свойство Закладки заполняется так:

 

 

{Customers.CompanyName}

 

 

В результате все компоненты будут помечены закладкой с названием компании. В дерево будут добавлены эти же названия компаний. И при нажатии на узлы дерева закладок компоненты будут успешно находиться.

 

 

Формирование закладок при помощи выражений

 

Сформировать достаточно сложную структуру закладок в отчете можно с помощью выражения. Даже плоский отчет (отчет не содержащий подчиненных записей) можно представить в виде иерархии из закладок. Общий вид выражения, с помощью которого можно представить любой отчет в виде иерархии из закладок, имеет вид:

 

 

%\name1\name2...\nameN

 

 

 

где name1 - имя закладки высшего уровня;

     nameN - имя закладки низшего уровня.

 

На рисунке снизу показана иерархия выражения общего вида:

 

 

 

В имени закладки можно указывать: функции, выражения, колонку источника данных, системные переменные, произвольные имена, псевдонимы и другое. Для примера, представим плоский отчет в иерархии из закладок. Для этого создадим один бэнд Данные, разместим на бэнде один текстовый компонент с колонкой источника данных Company Name. На рисунке снизу приведен пример шаблона отчета:

 

 

 

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

 

 

%\{Customers.Country}\{Customers.CompanyName}\{Customers.Phone}

 

 

Как видно из выражения иерархия закладок будет представлена тремя уровнями:

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

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

strel11 Низший уровень будет представлен закладками, где имя закладки соответствует телефонному номеру компании.

 

На рисунке снизу приведен пример иерархии из закладок:

 

 

 

Вложенность закладок

 

Вложенность зависит от того какие компоненты сгенерировали закладки. К примеру, закладка страницы будет всегда уровнем выше остальных закладок. Закладка сформированная бэндом Заголовок группы будет выше на уровень, чем закладка сформированная бэндом Данные в этой группе. В Master-Detail связке закладка Master будет включать все закладки Detail. К примеру, имеем отчет с группой.

 

Группа

--Данные 1

--Данные 2

--Данные 3

Группа

--Данные 1

--Данные 2

--Данные 3

 

 

В данном отчете группы включают в себя данные. Точно также и закладки из группы будут включать в себя закладки из данных. На выходе получим точно такую же структуру в дереве закладок. Другой пример:

 

Группа 1

--Группа 2

----Данные 1

----Данные 2

----Данные 3

 

Группа 1

--Группа 2

----Данные 1

----Данные 2

----Данные 3

 

 

В дереве закладок будет сформировано два узла - Группа 1, Группа 1. Каждый из этих узлов будет включать в себя узел Группа 2. Узлы Группа 2 будут включать в себя узлы данные. Пример с Master-Detail отчетом:

 

Мастер-Данные

--Данные 1

--Данные 2

--Данные 3

Мастер-Данные

--Данные 1

--Данные 2

--Данные 3

 

 

В этом примере узлы Master бэнда сформируют узлы Мастер-Данные. Каждый из этих узлов будет включать в себя узлы сформированные Detail бэндом.