Oracle APEX, строка подстановки не работает для элемента APEX (Выбрать список из запроса) - PullRequest
1 голос
/ 16 октября 2019

Я создал интерактивный отчет, который заполняется элементами Apex (текстовое поле, список выбора и т. Д.), Чтобы использовать отчет в качестве динамической формы.

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

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

Теперь Документация Oracle для элементов Apex предлагает следующий синтаксис для SELECT_LISTs :

SELECT empno "Employee #", ename "Name", APEX_ITEM.SELECT_LIST( p_idx => 3, p_value => deptno, p_list_values => 'ACCOUNTING;10,RESEARCH;20,SALES;30,OPERATIONS;40', p_attributes => 'style="color:red;"', p_show_null => 'YES', p_null_value => NULL, p_null_text => '-Select-', p_item_id => 'f03_#ROWNUM#', p_item_label => 'Label for f03_#ROWNUM#', p_show_extra => 'YES') "Department" FROM emp;

Важными атрибутами для того, что мне нужно, являются "p_item_id" и "p_item_label" .

Для них в документации сказано:

• Атрибут HTML ID генерируется для каждой строки, где # ROWNUM # подставляется вместо текущей строки rownum (параметр p_item_id). (Таким образом, для строки 4 создается идентификатор «f03_4».)

• Элемент метки HTML создается для каждой строки (параметр p_item_label).

Это должно быть то же самое для SELECT_LIST_FROM_QUERY , но чтобы быть уверенным, я протестировал его с обоими, и ни один из них не работает.

Сам элемент Apex создан нормально, но HTML-теги элементов не содержат требуемый ROWNUM.

Вместо того, чтобы отображаться как id="f03_4", как следует из документации, ключевое слово # ROWNUM # не заменяет текущий номер строки и простов приведенном выше примере отображается как <select name="f03" style="color:red;" id="f03_#ROWNUM#">.

Я что-то пропустил? Почему это не работает так, как это было описано? Мы работаем с APEX 19.1, и API для этой функциональности APEX_ITEM в основном такой же, как и в Apex 5. Поэтому я не думаю, что произошли какие-либо изменения.

Любые идеи приветствуются!

1 Ответ

1 голос
/ 16 октября 2019

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

Возможно, вы могли бы обойти это, используя p_attributes вместо p_item_id.

SELECT  empno "Employee #", 
    ename "Name",
    APEX_ITEM.SELECT_LIST(
        p_idx           =>   3,
        p_value         =>   deptno,
        p_list_values   =>   'ACCOUNTING;10,RESEARCH;20,SALES;30,OPERATIONS;40',
        p_attributes    =>   'style="color:red;" data-empno="' || empno || '"',
        p_show_null     =>   'YES',
        p_null_value    =>   NULL,
        p_null_text     =>   '-Select-',
        p_show_extra    =>   'YES') "Department"
FROM  emp;

Тогда выпросто измените ваш JavaScript (при условии, что вам это нужно), чтобы он указывал на атрибут данных, а не на атрибут id.

Вы также можете использовать empno с p_item_label для создания уникальных меток, если это необходимо.

...