1. 普通组件
对于Apex各种组件(page, region, item, button等) 可以很简单地在某种条件下设置为只读。它们的设置很类似,下面也region只读作为个例子。
在组件视图(Component View)
1. 点击某一个Region
2. 点击只读(Read only)标签
3.选择条件类型,有很多选择。简单的可以是一个表达式不为NULL或者两个表达式(不)相等。笔者常用的是PL/SQL Expression 或者PL/SQL Function body returning a boolean,因为它们可以支持更复杂的自定义逻辑。
4.确定并Apply change,就可以有效了。
2. 报表列组件
笔者在开发过程中发现,报表本身可以按上述方式整体被设为某个条件下的只读。但如果需求是只有某几列只读,就需要稍微复杂些的设置了。步骤如下:
1) 在Apex 建立一个hidden item,比如P1_Condition;
2) 在数据库建立一个PL/SQL function返回一个值(可以是数值,字符串值或者boolean值);
3) 在Apex 建立一个Before Header process,调用该function并赋值给之前建立的hidden item;
4) 在Apex 建立一个on page load的dynamic action, 执行javascript 脚本,大致过程的伪代码如下:
//1. 得到hidden item 的值 var cond = $ |