首页 > 代码库 > Oracle Apex 实用笔记系列 3 - 组件只读
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"); }); } |
Oracle Apex 实用笔记系列 3 - 组件只读
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。