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");

});

}

时间: 2025-01-31 08:55:37

Oracle Apex 实用笔记系列 3 - 组件只读的相关文章

Oracle Apex 实用笔记系列 0

按笔者理解,Oracle Application Express (Apex) 是oracle公司出品的,依赖于oracle数据库的一套web快速开发框架.Oracle Apex是笔者在实际开发工作中用到的一个工具.笔者发现虽然它的英文资源并不少,但可能是由于国内还不是很普遍,中文资源并不多.在实际工作中,有些蹊跷的问题很难在网络上找到中文的解决方案,所以,笔者计划把自己在实际工作中遇到的问题以及解决方案记录下来成为一个系列.这个系列本身并不是Oracle Apex教程,只是点滴的记载.如果以后

Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧

1. 理解Oracle Apex Url语法 一个Oracle Apex Url例子看上去像下面: http://myhost.mycompany.com/myservice/f?p=1023:1:220883404335693447 分为几个部分 myhost.mycompany.com 是服务器url myservice 是数据库服务 f?p=  是apex url前缀部分 1023 是application id 1 是page id 220883404335693447 是session

Oracle Apex 实用笔记系列 6 - 可编辑交互报告 Editable Interactive Report

据笔者所知,Apex 4.x 是没有提供可编辑交互报告组件的.这就需要我们手动实现.其实这也并不是很复杂,只需要简单几步. 1. 根据向导建立一个interactive report.查询语句可以如下. select apex_item.hidden(1,e.id) || e.name as staff, apex_item.select_list_from_lov(p_idx=>2,p_value=>e.department_id,p_lov=>'lov_department') as

Oracle Apex 实用笔记系列 4 - 自定义javascript

对于自定义的javascript,有如下几种方式 1. 页面加载 在组件视图 1.点击 编辑page 2.在javascript标签页的Function and global variable declaration处,书写自定义的javascript函数; 3.在Execute when page loads处调用或执行javascript代码 2.Dynamic Action 1.创建一个dynamic action; 2.选择事件类型,比如change, click, page load等

Oracle Apex 实用笔记系列 2 - 文件上传管理

1. 页面设计 页面A有若干region, 其中一个region用于文件列表管理(包括显示,下载,删除),如图A.在页面A有一button,点击它会调用页面B,页面B负责文件上传,如图B. 图A 图B 2. 数据库表设计 File FILE_ID           Number, FILE_DESC    Varchar2(256), CONTENT  Blob, mime_type varchar2(256), char_set     varchar2(256), last_update

Oracle Apex 有用笔记系列 6 - 可编辑交互报告 Editable Interactive Report

据笔者所知.Apex 4.x 是没有提供可编辑交互报告组件的.这就须要我们手动实现. 事实上这也并非非常复杂,仅仅须要简单几步. 1. 依据向导建立一个interactive report.查询语句能够例如以下. select apex_item.hidden(1,e.id) || e.name as staff, apex_item.select_list_from_lov(p_idx=>2,p_value=>e.department_id,p_lov=>'lov_department

Oracle Apex 有用笔记系列 2 - 文件上传管理

1. 页面设计 页面A有若干region, 当中一个region用于文件列表管理(包含显示,下载.删除).如图A. 在页面A有一button,点击它会调用页面B,页面B负责文件上传.如图B. 图A 图B 2. 数据库表设计 File FILE_ID           Number, FILE_DESC    Varchar2(256), CONTENT  Blob, mime_type varchar2(256), char_set     varchar2(256), last_update

C#温故知新:《C#图解教程》读书笔记系列

一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种特性.新版本除了精心修订旧版内容外,还全面涵盖了C# 5.0的新增特性,比如异步编程.调用者信息.case表达式.带参数的泛型构造函数.支持null类型运算等.通过本书,读者能够快速.深入地理解C#,为自己的编程生涯打下良好的基础. 本书是C#入门的经典好书,适合对C#感兴趣的所有读者.Daniel

【转】JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐(二)

前言:上篇 JS组件系列——Bootstrap组件福利篇:几款好用的组件推荐 分享了几个项目中比较常用的组件,引起了许多园友的关注.这篇还是继续,因为博主觉得还有几个非常简单.实用的组件,实在不愿自己一人独享,没办法,谁让博主这么爱分享呢~~ 本文原创地址:http://www.cnblogs.com/landeanfen/p/5603790.html 七.多值输入组件manifest 关于文本框的多值输入,一直是一个比较常见的需求,今天博主推荐一款好用的多值输入组件给大家,不要谢我,请叫我“红