Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Создание многозначной кнопки-флажка для обеспечения возможности фильтрации записей




Необходимо, чтобы в дополнение к полю поиска на странице Отчет Product Information отображались кнопки-флажки, позволяющие фильтровать записи о продуктах по их статусам (устаревший, заказ, запланированный, в стадии разработки):

1. Создайте на странице Отчет Product Information элемент, отображающий для каждого статуса продукта отдельную кнопку-флажок (многозначную кнопку-флажок, которая позволяет возвращать более одного значения):

а. Create – Page control on this page – Item

б. Тип элемента – Checkbox

в. Название элемента – P1_STATUS_FILTER (предполагается, что работа идет со страницей 1)

г. Порядковый номер (Sequence)– 15 (для того, чтобы элемент отображался сразу под полем поиска)

д. В качестве списка значений выберите созданный ранее список STATUSES.

е. Display Null Option – No

ж. Ярлык – Статус продукта

з. Источник значений – Static Assignment (value equals source attribute)

Особенность многозначной кнопки-флажка в том, что с одной стороны это один элемент, а с другой стороны – визуально он представляется множеством независимых кнопок-флажков. Как же в одном элементе сохраняется множество значений? Ответ – значения объединены в одну строку, но отделяются друг от друга двоеточием (“:”). Например, представленный ниже выбор пользователя сохраняется в элементе в виде значения устаревший:заказ:запланированный

 

 

Теперь для того, чтобы отображаемые кнопки-флажки можно было использовать для фильтрации записей, необходимо модифицировать запрос отчета, добавив в предложение WHERE соответствующее условие:

1. Добавьте в запрос отчета условие: (instr(:P1_STATUS_FILTER,product_status)>0 OR :P1_STATUS_FILTER IS NULL AND PRODUCT_STATUS IS NULL), объединив его с имеющимся условием оператором AND:

where

(

(

instr(upper("PRODUCT_NAME"),upper(nvl(:P1_REPORT_SEARCH,"PRODUCT_NAME"))) > 0

or instr(upper("PRODUCT_DESCRIPTION"),upper(nvl(:P1_REPORT_SEARCH,"PRODUCT_DESCRIPTION"))) > 0

or instr(upper("WARRANTY_PERIOD"),upper(nvl(:P1_REPORT_SEARCH,"WARRANTY_PERIOD"))) > 0

or instr(upper("PRODUCT_STATUS"),upper(nvl(:P1_REPORT_SEARCH,"PRODUCT_STATUS"))) > 0

)

and

(instr(:P1_STATUS_FILTER,PRODUCT_STATUS)>0 OR :P1_STATUS_FILTER IS NULL AND PRODUCT_STATUS IS NULL)

)

Обратите внимание:

* Функция instr(строка, подстрока, начальная позиция, № вхождения) ищет №-ое вхождение указанной подстроки в строке начиная с начальной позиции и возвращает позицию первого символа найденного вхождения. По умолчанию начальная позиция = 1 и № вхождения = 1. Если подстрока не входит в строку, возвращается 0.

* В данном случае условие проверяет, содержится ли статус продукта в маске фильтра (позиция вхождения статуса в маске фильтра > 0), или, если маска фильтра пуста, статус продукта также не определен. Если условие не выполняется, запись отбрасывается.

* Вторая часть условия OR :P1_STATUS_FILTER IS NULL AND PRODUCT_STATUS IS NULL необходима для того, чтобы отображать записи о продуктах, имеющих неопределенный статус (Null). Если же столбец PRODUCT_STATUS сделать обязательным (Not Null), то необходимость в такой проверке отпадет.

2. Протестируйте работу фильтра на странице Отчет Product Information, комбинируя различные значения фильтра и используя кнопку Go для отправки страницы на сервер:

 

 

Обратите внимание, что, если снять выделение со всех кнопок-флажков, то не отображается ни одной записи, т.к. для всех записей указан определенный статус (это справедливо, если не было введено записей с неопределенным статусом). Если имеет место такая ситуация, то имеет смысл в этом случае выводить записи с любыми статусами (для этого можно, например, сделать пустую маску эквивалентной маске заказ:устаревший:запланированный:в стадии разработки[8]):

1. Установите для элемента P1_STATUS_FILTER значение по умолчанию, соответствующее значению фильтра, когда выбраны все статусы (заказ:устаревший:запланированный:в стадии разработки). Для этого используйте окно Default.

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

Отображение кнопок-флажков в одну колонку не очень удачно с точки зрения использования пространства страницы. Кроме того, имеет смысл отображать подписи к кнопкам-флажкам в полужирном начертании. Измените элемент P1_STATUS_FILTER таким образом, чтобы кнопки-флажки выводились в 4 колонки, а подписи к ним были выделены полужирным начертанием:

1. Откройте страницу редактирования элемента P1_STATUS_FILTER

2. В секции Settingsустановите в поле Number of Checkbox Columns значение 4

3. В секции Element в поле Form Element Option Attributes введите class="fielddatabold". Это поле используется исключительно для кнопок-флажков и радио-кнопок и влияет на то, как APEX визуализирует индивидуальные опции элемента:

 


Поделиться:

Дата добавления: 2014-12-30; просмотров: 119; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты