Как иметь статическое значение в качестве первого значения в списке, используя JavaScript? ORACLE APEX - LOV LIST

1

Я использую Oracle Application Express 4.2, и у меня есть LOV (список значений) со списком номеров рейсов в списке выбора. Это динамический список значений. Я хочу добавить статическое значение в верхней части списка выбора, которое говорит "Предстоящие". Я также хочу добавить статическое значение перед конкретным полетом в списке выбора, который говорит "Прошлые рейсы". Таким образом, я могу различать в списке выбора, какие полеты предстоят и какие прошлые рейсы. Мой динамический LOV в настоящее время называется P_100_FLIGHT_LOV2.

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

Вот мой код JavaScript ниже:

var x = document.getElementById("P100_FLIGHT_LOV2");
 var option = document.createElement("option");
 option.text = "Upcoming";
 x.add(option);

Вот результаты этого кода JS в настоящее время:

SPX-14
67P
OA-9
55S
DRAGONX
34R
UPCOMING ----------CURRENTLY AT BOTTOM OF SELECT LIST

Желаемый набор результатов, который я хочу достичь:

UPCOMING -----------STATIC VALUE
SPX-14
67P
OA-9
PAST FLIGHTS ---------STATIC VALUE
55S
DRAGONX
34R
Теги:
oracle-apex
oracle-apex-5
lov

4 ответа

2
Лучший ответ

Это код JavaScript, который мне нужно, чтобы добавить статическое значение в мой существующий LOV. Этот код JavaScript выполняется при загрузке страницы и добавляет статическое значение "Прошлые рейсы" к указанному параметру. Спасибо за помощь всем.

$('#P100_FLIGHT_LOV2 option[value="55S"]').before('<option value="Past">--- Past Flights ---</option>');
2

Я не знаю, как это сделать с помощью JavaScript, но я знаю, как это сделать с помощью Oracle. Итак, вот и вы.

SQL> with flight_schedule (flight, sched) as
  2  (select 'SPX-14' , to_date('12.01.2018 22:00', 'dd.mm.yyyy hh24:mi') from dual union
  3   select '67P'    , to_date('12.01.2018 22:15', 'dd.mm.yyyy hh24:mi') from dual union
  4   select 'OA-9'   , to_date('12.01.2018 22:40', 'dd.mm.yyyy hh24:mi') from dual union
  5   select '555'    , to_date('12.01.2018 18:30', 'dd.mm.yyyy hh24:mi') from dual union
  6   select 'DRAGONX', to_date('12.01.2018 19:00', 'dd.mm.yyyy hh24:mi') from dual union
  7   select '34R'    , to_date('12.01.2018 19:28', 'dd.mm.yyyy hh24:mi') from dual),
  8  static_values as
  9  (select 1 what, 'UPCOMING' statval from dual union
 10   select 3     , 'PAST FLIGHTS'     from dual
 11  ),
 12  --
 13  prep as
 14  (-- Static values
 15   select what, statval flight, null sched
 16     from static_values x
 17   union
 18   -- Upcoming flights
 19   select 2 what, flight, sched
 20     from flight_schedule
 21     where sched > sysdate
 22   union
 23   -- Past flights
 24   select 4 what, flight, sched
 25     from flight_schedule
 26     where sched <= sysdate
 27  )
 28  select flight, sched scheduled_time
 29  from prep
 30  order by what, sched;

FLIGHT       SCHEDULED_TIME
------------ ----------------
UPCOMING
SPX-14       12.01.2018 22:00
67P          12.01.2018 22:15
OA-9         12.01.2018 22:40
PAST FLIGHTS
555          12.01.2018 18:30
DRAGONX      12.01.2018 19:00
34R          12.01.2018 19:28

8 rows selected.

SQL>

Несколько примечаний:

  • текущий "sysdate" (в отношении этого примера) - 12.01.2018 21:00
  • flight_schedule - фактическая "таблица расписания полетов", имеющая полеты и время расписания
  • они "объединены" со статическими значениями. В столбце WHAT показано, где разместить эти значения (т.е. Указывает на их позицию сортировки)
  • Таблица PREP подготавливает эти значения; статические тривиальны, а предстоящие и прошлые рейсы зависят от "sysdate",

О, да, еще одна вещь: поскольку это Apex LoV, вам нужно будет выбрать два значения: отображение и возвращаемое значение; что бы это было, вы узнаете лучше (вероятно, ПОЛЕТ и его идентификатор, или что-то в этом роде).

1

Самый удобный способ сделать это - использовать подключаемый модуль Select2. Как написано на плагине, она совместима с версией 4.2.

В свойствах подключаемого модуля вам нужно написать запрос, который возвращает 3 столбца. Третий - это столбец для имен групп (UPCOMING И PAST FLIGHTS):

select 'SPX-14' display_value, 1 return_value, 'UPCOMING' group_name from dual union all
select '67P',     2, 'UPCOMING' from dual union all
select 'OA-9',    3, 'UPCOMING' from dual union all
select '55S',     4, 'PAST FLIGHTS' group_name from dual union all
select 'DRAGONX', 5, 'PAST FLIGHTS' from dual union all
select '34R',     6, 'PAST FLIGHTS' from dual

См. Пример "Группировка параметров" на странице подключаемого модуля Select2.

1

Решение Javascript для этого не зависит от APEX. Поскольку APEX использует библиотеку jQuery, этот SO-ответ должен это сделать.

(NB Я не предлагал закрыть этот вопрос как дубликат, потому что @Littlefoot также показал, что в APEX, в частности, есть другие способы сделать это без использования Javascript.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню