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

#oracle-apex #oracle-apex-19.2

#oracle-apex #oracle-apex-19.2

Вопрос:

Есть ли способ установить выбранное значение во всплывающем окне с помощью PL / SQL?

Я использую

 :P2_MYLOV := myval
  

Который устанавливает возвращаемое значение LOV myval равным, но не отображает соответствующее отображаемое значение как выбранное. Как я могу выбрать значение LOV программно и установить соответствующее отображаемое значение? Возможно ли это?

В какой-то момент это сработало для меня, когда мой LOV был основан на запросе SQL и отображал только одно значение

 SELECT val_id
FROM Table1
WHERE field1 = 'test'
AND parent_id = :P2_ITEM1;
  

но как только я установил его в список общих компонентов значений с несколькими столбцами, он перестал работать

Комментарии:

1. Когда я пытаюсь это сделать, все работает так, как ожидалось. Можете ли вы настроить пример на apex.oracle.com ?

2. У меня была похожая проблема, и я решил ее с помощью DA. Можете ли вы кратко объяснить, как вы меняете значение в pl / sql?

Ответ №1:

Не совсем понятно, о чем вы спрашиваете. Мой самый большой вопрос заключается в том, когда вы пытаетесь изменить значение. Я предполагаю, что у вас есть элемент Apex, который является всплывающим окном где-то на странице, и вы хотите, чтобы значение выбиралось при загрузке страницы?

У вас есть источник элемента, который представляет собой вычисление, которое определяет, какое заполненное значение будет при загрузке страницы. Это может быть сделано с помощью выражения PL / SQL, SQL-запроса или чего-то еще. Это можно вычислять заново каждый раз, «Всегда, заменяя любое значение в состоянии сеанса» или когда в состоянии сеанса нет значения «Только тогда, когда текущее значение в состоянии сеанса равно нулю».

Другим вариантом является значение по умолчанию, которое используется, если значение по-прежнему равно нулю после вычисления источника. Это также может быть выражением или запросом.

Если вы пытаетесь изменить значение элемента в браузере, скажем, в ответ на какое-то действие пользователя, то вам нужно динамическое действие, которое не использовало бы PL / SQL. Единственный случай, который может иметь значение, — это если новое значение может быть вычислено только в базе данных, и Apex необходимо выполнить обратный переход к базе данных, но это редкость.

[Я только что попробовал динамическое действие во всплывающем окне на apex.oracle.com и это не сработало. Я не уверен, почему. Тем не менее, он работает нормально с обычным списком выбора.]