Как очистить/сбросить фильтр строк Apex

У меня есть интерактивный отчет, в котором я хотел бы программно сбросить фильтр строк.

Фильтр

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

apex.region("IR").widget().interactiveGrid("getActions").invoke("reset-report");

и

apex.region("IR").call("getActions").invoke('reset-report');

Но оба они ссылаются на отчет, а это фильтр строк?

Я смог сделать это с другой связанной страницы со следующим. сброс ссылки

Но я думаю, что было бы лучше сделать это через загрузку страницы, чтобы охватить все остальные страницы, на которые нет ссылок?

Пробовал это перед заголовком, но безуспешно:

Процесс предварительного рендеринга

Настройки процесса

Обнаружена новая проблема, связанная с нажатием кнопки со стрелкой «Далее» на странице. При этом фильтр сбрасывается. Сбросить фильтр нужно будет только в том случае, если мы оставим текущий page_id. Например, мы находимся на page_id 4 и нажимаем кнопку «Далее», чтобы увидеть все данные в IR с текущим фильтром. Только если мы оставим page_id 4, нам нужно сбросить фильтр.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Область интерактивного отчета (IR) и область интерактивной сетки (IG) — это два компонента с совершенно разной архитектурой. IR намного «старее» (представлен в APEX 3.2), более «серверен» и не имеет клиентской модели (и соответствующих опций программирования Javascript), которые есть у IG. Вызовы Javascript IG, которые вы показываете в своем вопросе, никогда не будут работать для IR, поскольку у него нет клиентской архитектуры, прослушивающей эти действия.

Изначально единственный способ сбросить фильтр на странице — это сделать это через URL-адрес. Однако в APEX 5 был добавлен API APEX_IR, позволяющий очищать или сбрасывать фильтры отчетов при загрузке страницы в процессе страницы: например:

DECLARE
  l_region_id apex_application_page_regions.region_id%TYPE;
BEGIN
  SELECT region_id 
    INTO l_region_id
    FROM apex_application_page_regions 
   WHERE application_id = :APP_ID and page_id = :APP_PAGE_ID and static_id = 'emp';
    APEX_IR.CLEAR_REPORT(
        p_page_id   => :APP_PAGE_ID,
        p_region_id => l_region_id,
        p_report_id => NULL);
 END;

Приведенный выше код должен перейти в процесс страницы, и предполагается, что IR имеет статический идентификатор emp.

Я попробовал ваш вариант, и он не работает для IR, я добавил это в «Выполнять при загрузке страницы». А фильтр строк еще на месте?

Bob Veitch 16.09.2023 21:51

Это код pl/sql. Он должен идти в процессе перед заголовком страницы. Параметр «Выполнять при загрузке страницы» предназначен только для кода JavaScript. Имеет ли это смысл ?

Koen Lostrie 16.09.2023 22:02

Нет, я не понимаю, куда добавить этот код, я предполагал, что это будет заголовок предварительного рендеринга перед? Но это не сработало. Я добавлю еще несколько скриншотов к тому, что я пробовал,

Bob Veitch 17.09.2023 15:55

Listire Я разобрался, забыл определить статический идентификатор, для ИК.

Bob Veitch 17.09.2023 16:13

Хороший вопрос, я добавил это в ответ.

Koen Lostrie 17.09.2023 18:41

Сегодня я заметил одну вещь: фильтр сбрасывается, когда я нажимаю стрелку следующей разбивки на страницы, чтобы перейти к следующим 10 записям IR? Есть ли способ сбросить фильтр столбца только тогда, когда мы отходим от текущего идентификатора страницы? Могу попробовать выложить скриншоты, чтобы было понятно.

Bob Veitch 18.09.2023 23:20

Хм... нет, ваша страница не знает, откуда она вызывается. Вы можете добавить элемент страницы P1_RESET_FILTER (или запрос) со значением и использовать его в качестве условия на стороне сервера в процессе страницы, но вам придется указать, что везде, откуда связана страница

Koen Lostrie 19.09.2023 08:03

Другое решение — разместить на странице кнопку «Сброс», чтобы пользователь мог решить очистить фильтры.

Koen Lostrie 19.09.2023 08:25

Другие вопросы по теме