У меня есть интерактивный отчет, в котором я хотел бы программно сбросить фильтр строк.
Я хотел бы знать, возможно ли это динамически или другими способами.
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, нам нужно сбросить фильтр.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Область интерактивного отчета (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.
Это код pl/sql. Он должен идти в процессе перед заголовком страницы. Параметр «Выполнять при загрузке страницы» предназначен только для кода JavaScript. Имеет ли это смысл ?
Нет, я не понимаю, куда добавить этот код, я предполагал, что это будет заголовок предварительного рендеринга перед? Но это не сработало. Я добавлю еще несколько скриншотов к тому, что я пробовал,
Listire Я разобрался, забыл определить статический идентификатор, для ИК.
Хороший вопрос, я добавил это в ответ.
Сегодня я заметил одну вещь: фильтр сбрасывается, когда я нажимаю стрелку следующей разбивки на страницы, чтобы перейти к следующим 10 записям IR? Есть ли способ сбросить фильтр столбца только тогда, когда мы отходим от текущего идентификатора страницы? Могу попробовать выложить скриншоты, чтобы было понятно.
Хм... нет, ваша страница не знает, откуда она вызывается. Вы можете добавить элемент страницы P1_RESET_FILTER (или запрос) со значением и использовать его в качестве условия на стороне сервера в процессе страницы, но вам придется указать, что везде, откуда связана страница
Другое решение — разместить на странице кнопку «Сброс», чтобы пользователь мог решить очистить фильтры.
Я попробовал ваш вариант, и он не работает для IR, я добавил это в «Выполнять при загрузке страницы». А фильтр строк еще на месте?