Oracle APEX添加多选批量操作

[[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. 数据源生成复选框
1
2
3
select id ,
      APEX_ITEM.CHECKBOX2(1, ID) AS                     选择
from daul 
  1. 添加全选操作
    OsXM1-2024-10-09-09-57-37
1
<input type="checkbox" onclick="javascript:$f_CheckAll(this, this.checked, $('[name=f01]'));">
  1. 其他设置
    OsXM1-2024-10-09-09-58-41

  2. js事件
    OsXM1-2024-09-06-14-46-48

 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
        }
    ]);
}
  1. js点击列选中事件
    1. 设置区域ID
      OsXM1-2024-10-09-10-03-42
    2. 除去多选列,其他每列设置id
      OsXM1-2024-10-09-10-04-41
    3. 多选列设置ID
      OsXM1-2024-10-09-10-05-24
    4. 设定JS 点击事件
      OsXM1-2024-10-09-10-09-43
     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('----')
    
  2. 记录数据ID至集合和生成下一页url

OsXM1-2024-09-06-14-48-33

 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;
Licensed under CC BY-NC-SA 4.0
最后更新于 2025-12-03 14:42
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计