如何根据其他选择列表值更改选择列表值?

时间:2014-11-19 17:38:02

标签: oracle oracle-apex

假设我在页面上有2个选择列表项目。两个列表都应该是静态的。我可以静态设置第一个列表项:

STATIC2:Lab1;1,Lab2;2,Lab3;3

现在基于这个选择,我希望第二个列表显示其中一个值集:

for 1 in first list => STATIC2:One;1,Two;2,Three;3
for 2 in first list => STATIC2:Apple;1,Pear;2,Orange;3
for 3 in first list => STATIC2:None;-1

基本上不需要来自表的查询。我怎样才能做到这一点?我的项目应该具有哪些参数和/或脚本?

1 个答案:

答案 0 :(得分:1)

至于我,我认为这里最简单的方法是为第二个静态列表创建表/查询。像这样:

with LOV2 as (select 1  return_value, 'One' display_name, 1 lov1_id from dual union all
              select 2, 'Two',   1 lov1_id from dual union all
              select 3, 'Three', 1 lov1_id from dual union all
              select 1, 'Apple', 2 lov1_id from dual union all
              select 2, 'Pear',  2 lov1_id from dual union all
              select 3, 'Orange',2 lov1_id from dual union all
              select 1, 'Almost none', 3 lov1_id from dual union all
              select 2, 'None',   3 lov1_id from dual)
select display_name, return_value
  from LOV2
 where lov1_id = :P_LOV1_VALUE

并将此查询用作LOV2的来源。

<强> UPD

转到Shared Components - &gt; User Interface - &gt; Lists of Values。点击Create,然后点击From scratch。然后,您可以看到字段Type,您可以在其中选择静态或动态类型。静态列表是一个列表,您可以在其中直接显示和返回值。动态列表是SQL查询的结果。每个列表都有两个字段:display_value - 用户在屏幕上看到的值和return value - 您将在PL / SQL代码中获得的值。另外LOV可以是named - 它是一个LOV,在Shared Components部分创建(你可以在很多页面上使用它,当你改变它时,它会随处变化)。要在页面打开项目的属性上使用命名LOV,请在LIST of Values部分中选择字段Named LOV中所需LOV的名称。
我上面的查询是动态LOV的源,您可以使用它创建一个命名的LOV或在页面上的LOV定义中使用。