Заполнение LOV в Oracle Apex на основе данных в другом текстовом поле - PullRequest
1 голос
/ 15 апреля 2010

Я новичок в Oracle Apex, и у меня возникла проблема. Наше приложение в настоящее время имеет метод ввода данных с несколькими текстовыми полями и необязательным списком значений. Я хотел бы, чтобы LOV основывался на информации в другом текстовом поле, например:

select APPOINTMENT_ID PATIENT_ID from APPOINTMENT where PATIENT_ID = :P9_PAT_NUM

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

Есть ли способ заставить это работать с LOV, или, возможно, каким-то другим методом?

Ответы [ 2 ]

3 голосов
/ 15 апреля 2010

В Apex версии 4+ это встроенная функция. Вы просто указываете элемент, от которого зависит LOV, в свойстве Каскадные родительские элементы LOV .

До версии 4 доступно несколько решений - Google "Apex cascading LOV", и вы найдете несколько решений, которые требуют небольшой работы, например:

Javascript: http://www.inside -oracle-apex.com / родовое-решение-для-каскадного-Select-listslovs /

ApexLib: http://one -size-doesnt-fit-all.blogspot.com / 2007/10 / апекс-каскадных-LOV для-revisited.html

Использование ExtJS: http://application -express-blog.e-dba.com /? Тег = апекс-каскадных-ЛОВ

0 голосов
/ 15 апреля 2010

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

1) Легко, но неуклюже:

Добавьте следующий Javascript к атрибутам элемента формы HTML первого элемента:

onchange="doSubmit()"

Эта страница будет отправлена ​​при изменении первого элемента, поэтому при перезагрузке текущее значение элемента будет использоваться для заполнения LOV. Я говорю, что это «неуклюжий», потому что вся страница перезагружается (медленно), и курсор возвращается в исходное положение.

2) Сложно, но гладко:

Если ваш LOV является всплывающим окном, вам просто нужно перевести значение первого элемента в состояние сеанса, что вы можете сделать с помощью Javascript и AJAX.

Если ваш LOV является списком выбора, то вам необходимо динамически повторно заполнить список выбора с использованием Javascript и AJAX.

Я не буду вдаваться в подробности этого, но я вижу, что пока я писал это, Джеффри Кемп опубликовал несколько полезных ссылок, которые объяснят более подробно.

...