Oracle Apex 实用笔记系列 3 - 组件只读

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 = $v('P1_Condition'); //$v函数用来获得某个item的值


//2. 比较条件
if( cond = 'abcd'){
// 3. 得到报表各个列
var col1Array = $('input[name="f02"]'); //利用jquery selector得到报表某一列

//col2, col3为希望只读的列
var col2IdPrefix="f03_";
var col3IdPrefix = "f04_";

$.each(col1Array , function(index,obj1) {
//计算各列对应的cell的id
var tmpId= (index+1);
var idStr = "0000"+ tmpId;
var idStrLen = idStr.length;
var idSubStr = idStr.substring(idStrLen-4,idStrLen);

var col2CompId = '#'+col2IdPrefix +idSubStr;
var col2Comp = $(col2CompId );

var col3CompId = '#'+col2IdPrefix +idSubStr;
var col3Comp = $(col2CompId );


//赋予各个cell为只读
col2Comp.attr("readonly","readonly");
col3Comp.attr("readonly","readonly");

});


}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值