APEX目前的动态操作(下简称DA)只能提供简单的一层判断操作。
即:if 条件为真
then 执行DA1
else 执行DA2
但很多时候我们需要比较复杂的条件判断。例如:
if 条件1为真
then 执行DA1
else if 条件2为真
then 执行DA2
else 执行DA3
下面就通过一个例子,用一种简单的方式,实现上述这种if...then...else if...then...else的嵌套DA操作。这种方式利用隐藏项(Hidden item)传递用于判断真假的值。通过这种方式,可以实现多层嵌套。
本文的具体应用是:
如果status项为“Closed”,则再判断service type项。
如果service type项为“OCI”,则显示按钮“Close OCI”,否则显示按钮“Close”
如果status项为非“Closed”,则显示按钮“Save”。
第一步:创建一个隐含项P4_OCI_CHECK。这里要注意的是:必须要在项属性里把“值受保护”这个开关关掉,否则点击按钮提交事务的时候会报错。

第二步:针对status项创建一个DA。
判断条件为:如果status=“Closed”为真,则把service_type的值赋给P4_OCI_CHECK。并把SAVE按钮隐藏起来。


如果status=“Closed”为假,则显示按钮“SAVE”,同时要把按钮“Close”和“Close OCI”隐藏起来。

第三步:回到P4_OCI_CHECK。针对这个隐藏项做一个DA。如果P4_OCI_CHECK=“OCI”为真,则显示“Close OCI”。否则,显示“Close”。

以此类推,可以不断地实现DA的多层嵌套。
===== End =====
更多Oracle APEX的知识和技巧,请猛戳下面二维码持续关注微信公众号“APEX中文社区”和“徐大爷的学习笔记”。
APEX中文社区

徐大爷的学习笔记





