суббота, 5 мая 2007 г.

Подсветка выбранной строки в отчетах Apex.

В состав Oracle Application Express входит ряд шаблонов для отчетов, но, к сожалению, ни одни из них не предоставляет функциональности подсветки выбранной строки. Оказывается исправить эту несправедливость не так уж и сложно... Для этого достаточно лишь немного скорректировать шаблон отчета. Что такое шаблон отчета и зачем он нужен хорошо описано в документации по Apex.

Итак, заходим в репозитарий шаблонов apex приложения, расположенный в "Shared Components"->"User Interface"->"Templates":
apex application report templates
Далее, создаем точную копию любого шаблона (копию делаем для того, чтобы в отчетах, которые уже используют этот шаблон не изменили своего поведения). В наше случае возьмем за основу стандартный шаблон отчета:
apex report remplates
Даем название для нового шаблона - "Standard (highlight row)".
apex naming for new report template
Далее, переходим к редактированию нового шаблона:
edit apex report templateПереходим к блоку "Column Templates" шаблона, где предоставляется возможность использовать все свои знания HTML :).
Добавляем в блоке "Column Template 1" строку " style="background-color:#CCCCCC" ", чтобы обозначит цвет фона для конкретной строки отчета. Далее, необходимо описать условия, при которых строка будет иметь указанный цвет фона. Для этого, в блоке "Column Template 1 Condition" выбираем значение "Use Based on PL/SQL Expression", а в блоке "Column Template 1 Expression" прописываем: " '#OBJECT_TYPE#' = :P1_TYPE ". Таким образом, у строки отчета будет отличный цвет фона только в том случае, если значение в колонке OBJECT_TYPE совпадает со значением, прописанным в невидимом поле P1_TYPE (происхождение и назначение этого поля можно узнать из этого топика про Master-Detail):
apex report template propertyКроме всего прочего, в блоке "Column Template 2" прописываем стандартное значение. Этот шаблон будет применяться для всех тех строк отчета, для которых не отработал первый шаблон. Далее, очищаем поле "Background color for checked row", так как цвет фона мы уже прописали в первом шаблоне, а так же в поле "Background color for current row" прописываем значение "#EEEEEE", тем самым отчет будет подсвечивать строку, над которой сейчас находится указатель мыши пользователя:

set current row color in apex report templateДалее, переходим к описанию отчета, для которого хотим применить новый шаблон:

choose report to apply new teplate in apex application
Переходим в блок "Layout and Pagination" в выпадающем списке "Report Template" выбираем название ранее созданного шаблона - "template: 17. Standard (highlight row)":
set new template for report in apexВот и все дела... Работу описанного выше приложения можно, как всегда, посмотреть на apex.oracle.com.

7 комментариев:

Анонимный комментирует...

Все сделала по инструкции. При наведении мышки на разукрашенную строку, цвет ее фона меняется на цвет по умолчанию, как победить?

Timoshinin Evgeny комментирует...

Как варианты:

1. Убедиться в том, что используется именно тот шаблон, который подсвечивает строку.
2. Открыть отчет в FireBug, убедиться в наличии событий onmouseout/onmouseover.
3. Убедиться, что цвет подсветки не совпадает с цветом фона.

Анонимный комментирует...

Скажите можно ли в шаблонах использовать свои собственные строки замены?
Хочу в секцию Before Each Row вставить свою строку вида «onclick="location.href='#USER_LINK#'"»

Timoshinin Evgeny комментирует...

Скажите можно ли в шаблонах использовать свои собственные строки замены?
Свои строки замены использовать можно. Об этом немного писалось в статье Вывод ревизии subversion в приложениях Apex.

andreev sergey комментирует...

Не работает в интерактивных отчетах. там нельзя выбрать новый шаблон для отчета

Serge Larionoff комментирует...

А и в самом деле, что делать в случае интерактивного отчёта? Я хочу, чтобы MASTER-строка, для которой выведены DETAIL-строки, была бы подсвечена, но в интерактивном отчёте шаблон выбрать нельзя.

Eduard Grebenyukov комментирует...

В interactive report есть штатные средства раскраски строк в меню "Actions"-"Format"-"Highlight" запущенного на выполнение отчета. После настройки раскраски можно сохранить "As Default Report Settings", после чего раскраска будет действовать у всех пользователей.