Oracle APEX - передача значения столбца IG в javascript - PullRequest
1 голос
/ 19 марта 2020

У меня есть IG со столбцом ссылок, в котором для цели задан URL-адрес, и я использую его для вызова javascript.

. То, что я хочу сделать sh, это каждый раз, когда щелкают столбец ссылки, возьмите значение другого - скрытого столбца и установите для элемента страницы это значение:

javascript:$s('P1_ITEM',#COLUMN2#);alert($v('P1_ITEM'));

, но что произойдет, если я ссылаюсь на значение COLUMN2, используя просто #COLUMN#, я получаю ошибку javascript, и если Я заключаю его в одинарные кавычки, значение P1_ITEM буквально устанавливается на #COLUMN2#.

1 Ответ

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

Первое, что я бы порекомендовал, - это перейти к действию Dynami c, а не пытаться поместить весь код в ссылку. Кроме того, я думаю, что кнопки лучше, чем ссылки (и они могут быть стилизованы под кнопки).

Начните с перехода к https://apex.oracle.com/ut. Перейдите в «Справка»> «Построитель кнопок» и создайте нужную кнопку. Затем скопируйте значение из поля Вся разметка .

Измените Тип столбца Ссылка на HTML Выражение и вставьте HTML из Button Builder в HTML Выражение поле. Я сделал мою кнопку похожей на ссылку (как у вас), добавил собственный класс в свойство класса с именем my-button и добавил атрибут данных для значения первичного ключа (моя таблица была EMP, поэтому ПК был EMPNO). В конечном итоге это выглядело так:

<button type="button" class="t-Button t-Button--link my-custom-button" data-id="&EMPNO.">Click me!</button>

Присвойте интерактивной сетке Stati c ID значение my-ig .

После этого создайте новое действие Dynami c. Установите Имя на . Моя кнопка нажала , Событие на Нажмите , Выбор Введите на jQuery Селектор и jQuery Селектор до .my-button . Наконец, установите Event Scope на Dynami c, который будет использовать делегирование события для поддержания привязки события в рабочем состоянии, если отчет обновляется (см. это для деталей ) .

В действии установите Действие на Выполнить JavaScript Код . Введите следующий код в поле Код :

var id = $(this.triggeringElement).data('id');
var model = apex.region('my-ig').call('getViews').grid.model;
var record = model.getRecord(id);
var job = model.getValue(record, 'JOB');

$s('P1_ITEM', job);

alert($v('P1_ITEM'));

Этот код начинается с получения значения первичного ключа из атрибута данных на кнопке с использованием jQuery 's data метод. Затем получается ссылка на модель, которая используется IG. Затем вызывается метод getRecord модели и передается значение первичного ключа. Наконец, метод getValue модели используется для получения значения 'JOB' из записи. Я пошел за столбцом JOB с тех пор, как использовал таблицу EMP, но вы можете go после любого столбца, который вам нужен.

Подробнее о методах модели вы можете узнать здесь: https://apex.oracle.com/js> Интерфейсы> Модель.

...