[[Oracle APEX]]
背景
添加批量操作
用到的API
前端 apex.navigation.redirect文档
后端 APEX_UTIL.PREPARE_URL 文档
1
2
3
4
5
6
7
8
|
graph TD;
勾选数据-->批量处理按钮;
批量处理按钮-->js事件;
js事件-->ajax;
ajax-->记录数据ID至集合;
记录数据ID至集合-->生成下个页面的URL;
生成下个页面的URL-->前台跳转下页;
|
操作
- 数据源生成复选框
1
2
3
|
select id ,
APEX_ITEM.CHECKBOX2(1, ID) AS 选择
from daul
|
- 添加全选操作

1
|
<input type="checkbox" onclick="javascript:$f_CheckAll(this, this.checked, $('[name=f01]'));">
|
-
其他设置

-
js事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// 获取选中的数据 并写入列表
var f01_arr = [];
jQuery("input[name=f01]:checked").each(
function (i) {
f01_arr[i] = $(this).val();
}
)
if (f01_arr.length > 0) {
// 同步请求后台将 选中的ID插进集合
apex.server.process("GET_ID_INTO_COLL", {
f01: f01_arr
}, {
//async: false, // 一定要关闭异步
success: function (data) {
//console.log(data.url)
apex.navigation.redirect(data.url);
},
error: function (jqXHR, textStatus, errorThrown) {
// handle error
}
}
);
} else {
apex.message.clearErrors();
// Now show new errors
apex.message.showErrors([
{
type: "error",
location: "page",
message: "似乎并没有选中房间!",
unsafe: false
}
]);
}
|
- js点击列选中事件
- 设置区域ID

- 除去多选列,其他每列设置id

- 多选列设置ID

- 设定JS 点击事件

1
2
3
4
5
6
7
8
9
10
11
12
13
|
//var a=this.triggeringElement
var tr_el = event.target.closest('tr');
console.log(tr_el)
//console.log(a.children("input"))
var input_el = tr_el.querySelector("td[headers='th_id_input']");
//console.log(event.target.parentNode)
if (input_el.firstChild.checked) {
input_el.firstChild.checked=false;
}else {
input_el.firstChild.checked=true;
};
//console.log('----')
|
- 记录数据ID至集合和生成下一页url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
DECLARE
l_exists boolean;
l_next_url varchar2(4000);
BEGIN
APEX_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION(
p_collection_name => 'USER_CHOOSE_DATA_ID'
);
FOR i IN 1..APEX_APPLICATION.G_F01.COUNT
LOOP
APEX_COLLECTION.ADD_MEMBER(
p_collection_name => 'USER_CHOOSE_DATA_ID',
p_c001 => APEX_APPLICATION.G_F01(i));
END LOOP;
l_next_url := APEX_UTIL.PREPARE_URL(
p_url => 'f?p=&APP_ID.:26:&APP_SESSION.::::',
p_triggering_element => q'!apex.jQuery('#butt_id')!');
apex_json.open_object; -- {
apex_json.write('status', '0'); -- "obj-attr": "value"
apex_json.write('url', l_next_url);
apex_json.write('errMessage', '我是错误信息!');
apex_json.close_all; -- }}
END;
|