Как получить текстовое поле для динамического обновления в Apex? - PullRequest
2 голосов
/ 20 марта 2012

Например,

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

Он будет искать это из таблицы

например, таблица будет выглядеть так, поэтому с помощью townID она сможет найти округ.

TownID || Town || County ||

Спасибо

Ответы [ 2 ]

7 голосов
/ 20 марта 2012

Вот очень простой пример использования таблицы DEPT: демонстрационная страница .

Когда вы выбираете DEPTNO из списка, соответствующее значение DNAME отображается в текстовом поле. Это делается с помощью «продвинутого» динамического действия, определенного так:

Dynamic Action properties

«Истинное действие» определяется следующим образом:

Это работает, выполняя AJAX туда-обратно, чтобы выполнить оператор выбора. Обратите внимание, что нам нужно указать Apex, чтобы оно отправляло текущее значение поля P25_DEPTNO, чтобы оно получало верные данные.

UPDATE

Конечно, когда это возможно, лучше избегать использования AJAX, поскольку каждое действие включает в себя передачу данных в оба конца на сервер. В этом случае этого можно избежать, поместив все необходимые данные в возвращаемое значение списка выбора, а затем проанализировав его на клиенте. Для этого вы можете определить список выбора LOV следующим образом:

select deptno d, deptno||':'||dname r
from dept
order by 1

Затем используйте динамическое действие, которое использует выражения Javascript для анализа возвращаемого значения и заполнения других элементов:

Javascript expression to set value

Конечно, список выбора больше не возвращает (просто) значение DEPTNO, поэтому мне также нужно разобрать его в отдельном поле, если мне нужно это значение (что я, вероятно, и делаю). Это требует второго Истинного Действия в определении динамического действия.

В результате (см. new demo ) не используется AJAX, поэтому он более эффективен, но несколько сложнее в коде - вам нужно немного знать Javascript. Также вам может понадобиться обработать случай, когда одно из значений данных включает выбранный вами разделитель (двоеточие в моем примере).

Какой путь зависит от ваших конкретных обстоятельств: если связанные данные стоят дорого (например, использует вызов сложной функции), может быть лучше использовать метод AJAX и получать данные только в том случае, если это действительно необходимо; но если это недорого, то сэкономить на поездках туда и обратно может стоить.

2 голосов
/ 20 марта 2012

Denes Kubicek имеет прекрасное демо-приложение на размещенном на Oracle сайте APEX (похоже, это то, что вы используете), которое показывает вам пример широкого набора элементов управления и кода, который вам нуженреализовать их.Наилучшим интерфейсом пользователя будет использование каскадного списка выбора APEX (в разделе III).

Гораздо меньше кода, но не такой приятный пользовательский интерфейс, как для установки каждого списка значений в «Выбор списка с отправкой».Затем второй список будет заполнен SELECT, который ссылается на значение из первого элемента управления.Некоторые примеры этого есть и в примере приложения Denes на странице Cascading LOV *1009* (в разделе I).

...