APEX: отправить без обновления страницы - PullRequest
1 голос
/ 10 марта 2020

У меня есть интерактивный отчет, который выполняет большой запрос, выполнение которого занимает около 20 секунд.

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

Поскольку большинству пользователей перед отправкой необходимо установить несколько фильтров, я создал кнопку Run Report, которая отправляет и обновляет страницу, поэтому пользователям не нужно ждать 20 секунд несколько раз, пока они устанавливают несколько фильтров.

Проблема в том, что некоторые фильтры являются списками выбора.
И эти списки выбора заполняются на основе на PL / SQL запросах, которые извлекают данные из базы данных, а также ссылаются на значения в других элементах на странице APEX как часть запросов.

Таким образом, когда пользователь выбирает элемент в одном из выбранных списки, мне нужно отправить элемент, который был «изменен», а затем обновить sh другие элементы фильтра на странице, но БЕЗ обновление t Вся страница / отчет.

Ajax должен быть в состоянии сделать это, верно?
Как вы это сделали sh это?

В настоящее время у меня есть динамические действия c это refre sh отдельных элементов, и это, кажется, работает.
Но он не извлекает правильные данные из базы данных для заполнения списков выбора, потому что он не передает другие элементы фильтра в первую очередь.

Ответы [ 2 ]

4 голосов
/ 10 марта 2020

Поэтому, когда пользователь выбирает элемент в одном из списков выбора, мне нужно отправить элемент, который был «изменен», а затем обновить sh другие элементы фильтра на странице, но БЕЗ обновления всего page / report.

Это должно быть довольно просто, поскольку элементы списка выбора в группе свойств «Список значений» содержат свойство Cascade LOV Parent item (s) . Он используется для целей, которые вы описали.

Например, если были выбраны элементы списка P1_CONTINENT, P1_COUNTRY, P1_CITY, то - при выборе континента в списке стран отображаются только страны на ранее выбранном континенте. Затем вы поместите P1_CONTINENT в P1_COUNTRY элемент списка "Cascading LOV Parent item (s)" и все.

1 голос
/ 10 марта 2020

Большая часть страницы APEX использует AJAX для обновления sh частей страницы. Так что он уже есть :) В любом случае, для списков выбора вы можете использовать «Родительский элемент (ы) каскадирования LOV», чтобы эти списки выбора обновляли sh всякий раз, когда другие элементы изменяют свои значения. Для другого элемента, у которого нет «Каскадного родительского элемента (ов) LOV», вам необходимо передать значения в сеанс, прежде чем вы сможете использовать их в некотором sql. Вы можете создать динамическое действие c для элементов, которые изменяют значение, выполнить выражение pl / sql точно так же, как фиктивный

null;

, передать значение элементов в сеанс и затем выполнить refre. sh предметов, которые нужно обновить ...

Надеюсь, это поможет :) и счастливого APEXing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...