Oracle APEX: вызов встроенного всплывающего окна из столбца ссылок в отчете classi c - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь вызвать javascript из столбца ссылки, который откроет встроенное всплывающее окно, установив целевой URL для этого столбца:

javascript:$s("P3_ITEM","#COLUMN1#");openModal("MY_INLINE_POPUP");

, и я получаю ошибку javascript: Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'open'. Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 24 февраля 2020

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

Вам необходимо изменить шаблон вашего региона "MY_INLINE_POPUP" на Inline Dialog и вы можете сделать это, перейдя в Настройки региона -> Внешний вид -> Шаблон и затем выберите Встроенный диалог ...

Еще один совет: при создании встроенного диалога вам также нужно позаботиться о еще одном регионе настройки и т. е. расположение региона. Внутри области расположения, позиция должна быть Inline Dialogs ..

Screenshot

0 голосов
/ 09 марта 2020

Мне не удалось воспроизвести проблему с помощью шаблона Inline Dialog, однако я получил ошибку с помощью шаблона Inline Popup. Вот некоторые шаги, которые должны помочь решить проблему с любым шаблоном ...

  1. Измените Тип столбца с Ссылка на Простой текст .
  2. Перейдите к вершине. oracle .com / ut> Справочная информация> Компоновщик кнопок. Используйте конструктор кнопок, чтобы создать кнопку, которая вам нравится, вы даже можете оформить ее как ссылку, если вы предпочитаете, чтобы она смотрела поверх кнопки. Скопируйте HTML в поле Вся разметка и вставьте его в поле HTML Выражение столбца. Вот пример:

    <button type="button" class="t-Button t-Button--link">My Button</button>
    
  3. Добавьте две вещи к разметке из предыдущего шага: 1) любые значения столбцов, необходимые в качестве атрибутов «data-» и 2) класс для целевого использования в Dynami c Action (я буду использовать my-custom-class). В вашем примере необходимо значение из COLUMN1, поэтому оно будет выглядеть следующим образом:

    <button type="button" data-column1="#COLUMN1#" class="t-Button t-Button--link my-custom-class">My Button</button>
    
  4. Создать новое действие Dynami c. Для действия Dynami c установите Событие на Нажмите , Тип выбора на jQuery Селектор , jQuery Селектор до .my-custom-class (от HTML выше) и Область событий до Dynami c (для сохранения все работает, если отчет обновляется). Для Действие, созданного по умолчанию, установите Тип на Выполнить JavaScript Код . Введите следующий код в поле Код :

    $button = $(this.triggeringElement);
    $s('P3_ITEM', $button.data('column1'));
    

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

  5. Добавьте дополнительное действие к действию Dynami c. Установите Тип на Открыть регион и затем выберите правильный регион для открытия.

Это должно сделать это. Я не смог найти нигде документированную функцию openModal. Это может не поддерживаться больше. Dynami c Actions Open Region и Close Region , вероятно, являются лучшим выбором в настоящее время. Можно использовать jQuery API диалога с пользовательским интерфейсом, но я бы посоветовал против него.

Для получения дополнительной информации ознакомьтесь с этой записью в блоге Джона Снайдерса: https://hardlikesoftware.com/weblog/2019/12/23/all-the-things-that-pop-up/ Есть демоверсия приложение, которое вы можете скачать и узнать.

0 голосов
/ 24 февраля 2020

, если вы хотите открыть всплывающий регион, используйте это:

$("#POPUP_REGION_ID).popup("open");
...