当前位置: 首页 > news >正文

Oracle APEX 经典报表中的Checkbox

1. 建表&投入测试数据

CREATE TABLE CONTRACT_YEAR_SETTING (BU_CODE        VARCHAR2(2 CHAR), BU_NAME        VARCHAR2(500 CHAR), YEAR           NUMBER(4), STATUS         VARCHAR2(30), START_DATE     DATE, END_DATE       DATE
);
/
INSERT INTO CONTRACT_YEAR_SETTING VALUES('02', '医学部_01',2024,'O',TO_DATE('2024-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2024-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('03', '医学部_02',2024,'O',TO_DATE('2024-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2024-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('10', '医学部_10',2024,'O',TO_DATE('2024-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2024-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('02', '医学部_01',2025,'O',TO_DATE('2025-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2025-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('03', '医学部_02',2025,'O',TO_DATE('2025-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2025-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO CONTRACT_YEAR_SETTING VALUES('10', '医学部_10',2025,'O',TO_DATE('2025-01-01 12:34:56','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2025-12-01 12:34:56','YYYY-MM-DD HH24:MI:SS'));
COMMIT;

2. 经典报表做成

2-1. 画面布局如下

2-2. 报表使用的SQL

select APEX_ITEM.CHECKBOX2(1,ROWID,'class="row-checkbox"') as RS,BU_CODE,BU_NAME,YEAR,DECODE(STATUS,'O','オーペン','C','クロース','') AS STATUS,START_DATE,END_DATEfrom CONTRACT_YEAR_SETTING cyswhere (:P3003_YEAR IS NULL OR cys.YEAR = :P3003_YEAR)order by cys.BU_CODE, cys.YEAR

2-3. RS列的Heading设定

<input type="checkbox" id="selectAll" onclick="toggleSelectAll(this)">

2-4. Function and Global Variable Declaration

function toggleSelectAll(checkbox) {$('.row-checkbox').prop('checked', checkbox.checked);
}
function initCheckboxSync() {$('#selectAll').click(function() {var isChecked = $(this).prop('checked');$('.row-checkbox').prop('checked', isChecked).trigger('change');});$('.row-checkbox').change(function() {updateHeaderState();updateSelectedItems();});updateHeaderState();
}
function updateHeaderState() {var total = $('.row-checkbox').length;var checked = $('.row-checkbox:checked').length;$('#selectAll').prop('checked', checked === total).prop('indeterminate', false);
}

2-5. Execute when Page Loads

initCheckboxSync();

2-6. Process

DECLARElt_selected_ids    apex_application_global.vc_arr2;lv_status          CONTRACT_YEAR_SETTING.STATUS%type;
BEGINlt_selected_ids := apex_application.g_f01;if lt_selected_ids.COUNT = 0 thenapex_error.add_error (p_message          => 'No rows are selected or updated.',p_display_location => apex_error.c_inline_in_notification );return;end if;FOR i IN 1..lt_selected_ids.COUNT LOOPSELECT STATUSINTO lv_statusFROM CONTRACT_YEAR_SETTINGWHERE ROWID = lt_selected_ids(i);IF lv_status = 'C' THENUPDATE CONTRACT_YEAR_SETTINGSET STATUS = 'O'WHERE ROWID = lt_selected_ids(i);ELSEUPDATE CONTRACT_YEAR_SETTINGSET STATUS = 'C'WHERE ROWID = lt_selected_ids(i);END IF;END LOOP;COMMIT;
END;

3. 运行效果

http://www.xdnf.cn/news/1343251.html

相关文章:

  • 使用EasyExcel自定义导出表格
  • 开发二手车小程序时,如何确保信息的真实性和可靠性?
  • C#:窗体间传值
  • 计数组合学7.20(平面分拆与RSK算法)
  • 亚矩阵云手机:亚马逊第三方店铺多账号安全合规运营的核心技术支撑
  • Matplotlib 可视化大师系列(六):plt.imshow() - 绘制矩阵与图像的强大工具
  • 2026年计算机毕设推荐:基于大数据的慢性肾病数据可视化分析系统技术选型指南【Hadoop、spark、python】
  • 决策树基础学习教育第一课:从概念到核心原理
  • 【Canvas与旗帜】美国星条旗玻璃光圆饼
  • Lua脚本如何执行主程序的C函数
  • ODYSSEY:开放世界四足机器人的探索与操控,助力长范围任务
  • Node.js 开发 JavaScript SDK 包的完整指南(AI)
  • 基于Node.js服务端的社区报修管理系统/基于express的在线报修管理系统
  • 数据工程师——ETL
  • FastText 词向量全景指南(没那么全)
  • 如何创建一个Cloudfalare worker项目?
  • vue-admin-template权限管理
  • 【python】os.makedirs和with open
  • pytorch与mindspore的简单ViT实现
  • 【数据分享】中国371个城市的坡度矢量数据和excel数据
  • uniappx与uniapp的区别
  • 【在ubuntu下使用vscode打开c++的make项目及编译调试】
  • MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作
  • 3-2〔OSCP ◈ 研记〕❘ WEB应用攻击▸WEB安全防护体系
  • 云计算学习100天-第27天
  • 嵌入式学习day34-网络-tcp/udp
  • 新手向:用FastAPI快速构建高性能Web服务
  • Codeforces1043 A至F 题解
  • 关于 java+gradle的弹窗多选应用app
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10