APEX_ITEM POPUP ссылается на другой apex_item - PullRequest
0 голосов
/ 24 июня 2019

У меня есть страница с парой элементов и содержимым PLSQL Dynamic.

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

Довольно многие из них являются элементами POPUP_FROM_QUERY, где QUERY также берется из таблицы. Это хорошо работает для большинства вещей, но некоторые из них таковы, что QUERY ссылается на другой динамически сгенерированный элемент (например, я создаю элементы для отдела и для имени, вы выбираете отдел, элемент имени показывает только имена в этом отделе).

Код выглядит примерно так:

  htp.p ((APEX_ITEM.POPUP_FROM_QUERY (p_idx => 2, p_value => '', p_item_id => 'dept_name', p_lov_query => 'SELECT dept department, dept_id id FROM departments WHERE dept_location = ''USA''', p_item_label => 'dept_name')));

  htp.p ((APEX_ITEM.POPUP_FROM_QUERY (p_idx => 2, p_value => '', p_item_id => 'emp_name', p_lov_query => 'SELECT emp emp_name, emp_id id FROM employees WHERE department = :dept_name', p_item_label => 'emp_name')));

Я только поместил соответствующие строки здесь, на самом деле есть три линии, одна с p_idx = 1, а другая с p_idx = 4 (очевидно, вам нужно оставить одну для LOV), но все они только для отображения. При сохранении я ссылаюсь на них с помощью apex_application.g_f01 (i), где вы заменяете 1 на p_idx.

Я попытался заменить: dept_name практически всем. apex_application.g_f02 (1), dept_name (p_item_id), g_f02 (1), f02 (1), f02_0001 (при проверке элемента в консоле это отображается как id). Я пробовал все это и все это с «:» перед. Я также попробовал их только что включить в скобки выбора, и, выполнив «выберите ..... где .. = '|| : dept_name || '' ''. Кажется, ничего из этого не работает, и я не смог найти ничего в Интернете или в документации для APEX_ITEM

1 Ответ

0 голосов
/ 03 июля 2019

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

Все динамически сгенерированные элементы имеют идентификаторы, например f02_0000, где02 - это идентификатор элемента, а 0000 - это строка (первый генерируемый элемент - 0000, второй - 0001, ...)

Я создал кучу скрытых элементов на странице и то же самоеколичество элементов приложения и назвали их все по порядку (ITEM_1, ITEM2, ...)

Затем я сделал динамическое действие на странице, Событие: Изменить, Тип выбора: jQuery Selector, jQuery Selector: input[name = "f02"] - все введенные вами apex_items - p_idx => 2. в моем сценарии.

У этого DA есть действие Javascript, которое получает номер запускающего элемента с

parseInt(this.triggeringElement.id[this.triggeringElement.id.length -1])

Это, конечно, только последний номер идентификатора, но изменить это легко.

Тогда у меня также есть действие, которое присваивает значение элемента страницы его соответствующемуэлемент приложения.

:APPLICATION_ITEM_1 := :ITEM_1;

Где я также помещаю все элементы в элементы для отправки

И затем я изменяю все LOV для использования соответствующих элементов приложения.

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

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

...