如何使用 JavaScript 将静态值作为列表中的第一个值? ORACLE APEX - LOV 列表
How to have static value as first value in list using JavaScript? ORACLE APEX - LOV LIST
我正在使用 Oracle Application Express 4.2,并且我有一个 LOV(值列表),其中包含 select 列表中的航班号列表。这是一个动态的值列表。我想在 select 列表的顶部添加一个静态值 "Upcoming"。我还想在显示 "Past Flights" 的 select 列表中的特定航班之前添加一个静态值。这样我就可以在 select 列表中区分哪些航班即将到来,哪些是过去的航班。我的动态 LOV 当前称为 P_100_FLIGHT_LOV2。
我下面有一些 JavaScript 代码在页面加载时执行,它正在向我的 select 列表添加 "Upcoming" 静态值,但它添加为最后一个选项。在特定航班之前,我想要这个在顶部,一个在中间。如何使用 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
我不知道如何使用 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 实际 "flight schedule table",有航班和
计划时间
- 它们 "unioned" 具有静态值。 WHAT 列显示去哪里
放置这些值(即指向它们的排序位置)
- PREP table 准备这些值;静态的是微不足道的,而
即将到来和过去的航班取决于 "sysdate"
哦,是的 - 还有一件事:因为这是一个 Apex LoV,你必须 select 两个值正好:一个 display 和一个 return值;这些是什么,你会更清楚(可能是 FLIGHT 及其 ID,或类似的东西)。
Javascript 对此的解决方案不是特定于 APEX 的。由于 APEX 使用 jQuery 库 this SO answer 应该这样做。
(注意,我没有建议将此问题作为重复问题关闭,因为@Littlefoot 还表明,在 APEX 中,有其他方法可以在不使用 Javascript 的情况下执行此操作。)
最方便的方法是使用 Select2 插件。正如插件页面上所写,它与 4.2 版兼容。
在插件的属性中你需要写一个查询,其中returns 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 插件页面上的示例 "Option Grouping"。
这是我需要的 JavaScript 代码,可以将静态值添加到我现有的 LOV。此 JavaScript 代码在加载页面并将静态值 "Past Flights" 添加到指定选项时执行。感谢大家的帮助。
$('#P100_FLIGHT_LOV2 option[value="55S"]').before('<option value="Past">--- Past Flights ---</option>');
我正在使用 Oracle Application Express 4.2,并且我有一个 LOV(值列表),其中包含 select 列表中的航班号列表。这是一个动态的值列表。我想在 select 列表的顶部添加一个静态值 "Upcoming"。我还想在显示 "Past Flights" 的 select 列表中的特定航班之前添加一个静态值。这样我就可以在 select 列表中区分哪些航班即将到来,哪些是过去的航班。我的动态 LOV 当前称为 P_100_FLIGHT_LOV2。
我下面有一些 JavaScript 代码在页面加载时执行,它正在向我的 select 列表添加 "Upcoming" 静态值,但它添加为最后一个选项。在特定航班之前,我想要这个在顶部,一个在中间。如何使用 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
我不知道如何使用 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 实际 "flight schedule table",有航班和 计划时间
- 它们 "unioned" 具有静态值。 WHAT 列显示去哪里 放置这些值(即指向它们的排序位置)
- PREP table 准备这些值;静态的是微不足道的,而 即将到来和过去的航班取决于 "sysdate"
哦,是的 - 还有一件事:因为这是一个 Apex LoV,你必须 select 两个值正好:一个 display 和一个 return值;这些是什么,你会更清楚(可能是 FLIGHT 及其 ID,或类似的东西)。
Javascript 对此的解决方案不是特定于 APEX 的。由于 APEX 使用 jQuery 库 this SO answer 应该这样做。
(注意,我没有建议将此问题作为重复问题关闭,因为@Littlefoot 还表明,在 APEX 中,有其他方法可以在不使用 Javascript 的情况下执行此操作。)
最方便的方法是使用 Select2 插件。正如插件页面上所写,它与 4.2 版兼容。
在插件的属性中你需要写一个查询,其中returns 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 插件页面上的示例 "Option Grouping"。
这是我需要的 JavaScript 代码,可以将静态值添加到我现有的 LOV。此 JavaScript 代码在加载页面并将静态值 "Past Flights" 添加到指定选项时执行。感谢大家的帮助。
$('#P100_FLIGHT_LOV2 option[value="55S"]').before('<option value="Past">--- Past Flights ---</option>');