Oracle APEX: вызов встроенного всплывающего окна из столбца ссылок в классическом отчете

Я пытаюсь вызвать 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'. Что я делаю неправильно?


person Coding Duchess    schedule 21.02.2020    source источник
comment
Привет, герцогиня кодирования. Эта проблема решена?   -  person Dan McGhan    schedule 06.03.2020
comment
нет, так и не удалось решить   -  person Coding Duchess    schedule 07.03.2020
comment
Привет, герцогиня кодирования, помог ли мой ответ ниже?   -  person Dan McGhan    schedule 12.03.2020
comment
Привет, Дэн. Не уверен, потому что вы дали свой ответ несколько дней назад, а этот вопрос был оставлен еще в феврале.   -  person Coding Duchess    schedule 12.03.2020
comment
Понятно, я больше не буду об этом беспокоиться. Спасибо!   -  person Dan McGhan    schedule 12.03.2020


Ответы (3)


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

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

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

Снимок экрана

person Lokesh Sharma    schedule 24.02.2020

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

$("#POPUP_REGION_ID).popup("open");
person mohamad subhi bouchi    schedule 24.02.2020

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

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

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

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

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

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

  5. Добавьте к динамическому действию дополнительное действие. Установите для Тип значение Открытая область, а затем выберите нужную область для открытия.

Это должно сработать. Я нигде не мог найти задокументированную функцию openModal. Его больше нельзя поддерживать. Динамические действия Открыть область и Закрыть область, вероятно, сейчас являются лучшим выбором. Можно было бы использовать API диалога jQuery UI, но я бы не советовал этого делать.

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

person Dan McGhan    schedule 09.03.2020