apex如何单排?
在做表格时,我们经常有这样的需求,那就是把report的第一列设成单选框,这样用户可以通过勾选这些单选框,来选择需要集中进行操作的行,以进行批量删除或是修改。
在APEX中,这样的单选框可以通过apex_item包中的checkbox函数来实现。
函数原型如下:
APEX_ITEM.CHECKBOX(
p_idx IN NUMBER,
p_value IN VARCHAR2 DEFAULT NULL,
p_attributes IN VARCHAR2 DEFAULT NULL,
p_checked_values IN VARCHAR2 DEFAULT NULL,
p_checked_values_delimitor IN VARCHAR2 DEFAULT :,
p_item_id IN VARCHAR2 DEFAULT NULL,
p_item_label IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
在apex中,单选框选中后的值会存储到一个内部集合之中,这个集合可能是个联合数组,具体实现不太清楚,但是这些集合最多只能有50个,也就是说,不同种类的单选框只能有50种。
p_idx参数就是指明到底是用第几个内部集合,如果你要创建一个大型的应用,其中很多页面要用到单选框,这样你就得找个地方记一下哪个集合对应于哪个页面或是场合,否则若是不同的场合用到了同一个集合,极有可能会导致数据出问题。
p_value 用来指示该存储什么数据,在具体应用时,这个一般是某个主键列。
p_attributes可以是Checked和Unchecked两种,用来指示单选框的初始选择状态。
p_checked_values与p_checked_values_delimitor结合,用来指定初始状态下那些单选框被默认选择或不选。p_value值如果在p_checked_values中出现,则单选框呈现p_attributes所指定的状态,例如如果p_value此时是10, p_checked_values是10:20,p_attributes是checked,那么因为p_value现在在p_checked_values之中,则此单选框呈现p_attributes所指定的勾选状态,而p_checked_values_delimitor则是用来分隔p_checked_values中各个值的分隔符,这里是个冒号。
p_item_id和p_item_label用来指定此单选框在html代码里面的id属性,应该在使用javascript时会有不小的用途。
那么我们该如何得到单选框所选择的值呢,apex提供了apex_application包,在此包里,我们可以得到如下的集合变量APEX_APPLICATION.G_F01,这里G_F01就存储了被勾选的所有单选框的值,G_F是前缀,而01则是p_idx所指定的值,当然因为最多只能有50个不同的集合,所有只能有G_F01到G_F50可用。
以下代码摘自http://www.apex-
blog.com/oracle-apex/adding-a-checkbox-to-your-report-apex_item-tutorial-30.html
展示了如何挨个读取每个集合元素的值,然后进行dml操作,非常直观简单。BEGIN
FOR i in
1..APEX_APPLICATION.G_F01.COUNT
LOOPUPDATE emp
SET ticked = Y
WHERE empno = APEX_APPLICATION.G_F01(i);
END LOOP;
COMMIT;
END;
以下例子示范了如何让部门号是10的员工行被勾选:
SELECT APEX_ITEM.CHECKBOX(1,empno,DECODE(deptno,10,CHECKED,NULL)) Select,
ename, job
FROM emp
ORDER BY 1
以下例子示范了如何让部门号是10与20的员工行被勾选:
SELECT APEX_ITEM.CHECKBOX(1,deptno,NULL,10:20,:) Select,
ename, job
FROM emp
ORDER BY 1
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有