我正在使用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
答案 0 :(得分: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>
一些注意事项:
哦,是的 - 还有一件事:因为这是Apex LoV,你必须准确地选择两个值: display 和 return 值;这些会是什么,你会更清楚(可能是FLIGHT及其ID,或类似的东西)。
答案 1 :(得分:2)
这是我需要能够为现有LOV添加静态值的JavaScript代码。这个JavaScript代码在页面加载时执行并添加静态值&#34;过去的航班&#34;到指定的选项。感谢大家的帮助。
$('#P100_FLIGHT_LOV2 option[value="55S"]').before('<option value="Past">--- Past Flights ---</option>');
答案 2 :(得分:1)
对此的Javascript解决方案不是APEX特定的。由于APEX使用jQuery库this SO answer应该这样做。
(注意,我没有提议将此问题作为副本关闭,因为@Littlefoot还表明在APEX中还有其他方法可以在不使用Javascript的情况下执行此操作。)
答案 3 :(得分: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
参见示例&#34;选项分组&#34;在Select2插件页面上。