Нужно получить идентификатор отчета IR в URL Javascript, который открывает окно браузера в Oracle Apex 5.1

1

Я пытаюсь перенести приложение из Apex 4.2 в Apex 5.1

Я попытаюсь описать полный прецедент:

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

В диалоговом окне есть кнопки Previous/Next, позволяющие пользователям перемещаться по записям.

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

Например, если фильтр отчета выбирает только одну строку, то диалоговое окно "Next/Previous" отключается, потому что больше нет строк, отображаемых в отчете для навигации.

В Apex 4.1 мы делали это, передавая идентификатор интерактивного отчета (в Javascript через URL), который затем использовался процессом страницы для запроса представлений Application Express в фоновом режиме для идентификации установленных фильтров и использования эту информацию для генерации предложения WHERE, которое затем передается процессу "Получить следующий или предыдущий первичный ключ".

Теперь в Apex 5 мы не можем этого сделать, потому что мы не знаем идентификатор IR, а также не уверены, можем ли мы запросить метаданные таким же образом.

Я был бы рад узнать, какой был бы лучший подход к получению такого же поведения в Apex 5.

v_url = 'f?p=' + pAPP_ID + ':' + pPageNo + ':' + pAPP_SESSION + '::::' + pKeyColumn + ',' + pIRReportID + ',' + pModeColumn + ':' + pKeyValue + ',' + $v('apexir_REPORT_ID') + ',' + pMode;

Заранее спасибо за помощь.

  • 0
    Какая проблема решается в оригинальном решении?
  • 0
    Проблема в том, что когда я нажимаю на опцию редактирования в любой строке в моем интерактивном отчете, он должен открыть окно браузера с подробной информацией о той конкретной строке, где будут находиться опции редактирования и удаления. Это происходит из-за URL-вызова Javascript. Он работал нормально в Apex 4.2, но не в Apex 5.
Показать ещё 1 комментарий
Теги:
oracle-apex

1 ответ

0
Лучший ответ

Я не знаю, почему вам нужен идентификатор интерактивного отчета на другой странице. Эта работа необходима на многих страницах или только на этом? Если только в этом случае вы можете установить статический идентификатор для этого отчета и использовать определенный идентификатор непосредственно в своем URL-адресе (изображение ниже).

Изображение 174551

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

Таким образом, вы можете получить идентификатор этого отчета на странице из этого скрытого поля "apexir_REPORT_ID".

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

Из-за этого (только предполагая)... они изменили способ доступа к идентификатору определенного интерактивного отчета на странице. Если вы не установили статический идентификатор своего отчета, это скрытое поле будет выглядеть так в вашем HTML:

Изображение 174551

Но если вы установите идентификатор, скрытое поле будет выглядеть так: Изображение 174551

В этом случае, чтобы получить это число в атрибуте value, вы можете сделать это:

$v('YOUR_ID_HERE_report_id')
//or
apex.item('YOUR_ID_HERE_report_id').getValue()

Вы можете найти это число, когда захотите, с этим выбором

 select region_id from apex_application_page_regions
 where 
 application_id = :APP_ID AND
 page_id = :APP_PAGE_ID AND
 UPPER(region_name) = UPPER(v_region_name);
  • 0
    Привет, Ромеу. Да, мне нужно сделать, как ты спросил. Но я не хочу переходить на каждую страницу, чтобы создать элемент и получить статический идентификатор, так как у меня много IR-страниц. Есть ли другой способ сделать это как универсальную логику. поэтому все отчеты должны получать свои статические идентификаторы из глобальных сценариев. Кроме того, я отредактировал свой вопрос для большего уточнения. Спасибо за помощь :)
  • 0
    Вам не нужно создавать предмет. Каждый раз, когда вы создаете интерактивный отчет, он автоматически создает этот элемент. Ваша проблема в том, что APEX создал этот элемент с именем apexir_report_id. Но это больше невозможно, потому что у каждого интерактивного отчета должен быть свой элемент. Таким образом, они изменили название этого элемента на этот формат, показанный в HTML.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню