如何在Oracle APEX中创建带表格行对应复选框的动态表单
Oracle APEX 表格行动态复选框实现方案
APEX_ITEM包弃用后,可根据你的使用场景选择以下两种原生支持的落地方案:
方案1:交互式网格(IG)内置功能(最推荐)
适合需要表格编辑、批量操作的场景,无需自定义代码即可实现:
- 新建交互式网格区域,绑定你需要展示的业务数据源
- 在IG属性面板的「功能」分类下,开启「行选择」选项,选择「多选」模式,系统会自动为每一行数据生成对应复选框
- 如需获取选中行数据,前端可调用IG官方API获取:
apex.region("你的IG静态ID").widget().interactiveGrid("getViews", "grid").model.getSelectedRecords() - 后台处理时可直接通过IG的内置行选择标识获取选中数据,无需额外配置参数传递
方案2:经典报告自定义列渲染
适合使用经典报告展示数据的场景,自定义程度更高:
- 在经典报告的查询SQL中新增占位符列,例如:
null as select_flag - 编辑
select_flag列属性,将显示类型设置为「HTML表达式」,填入自定义复选框代码:<input type="checkbox" name="row_selector" value="#主键列名#" class="custom-row-checkbox"> - 新增页面隐藏项
PX_SELECTED_IDS(X为你的页面编号),用于存储选中的主键值 - 新增动态动作,触发条件为提交按钮点击,执行以下JavaScript代码:
let selectedIds = []; document.querySelectorAll('.custom-row-checkbox:checked').forEach(item => { selectedIds.push(item.value); }); apex.item('PX_SELECTED_IDS').setValue(selectedIds.join(','));
- 后台PL/SQL处理逻辑中,直接拆分
PX_SELECTED_IDS的逗号分隔值即可获取所有选中行的主键,完成后续业务操作
以上两种方案均适配APEX 20.1及以上全部版本,无需依赖弃用组件,性能和可维护性均优于旧的APEX_ITEM实现。如果需要额外实现全选、反选功能,仅需补充少量JS逻辑即可实现。
内容的提问来源于stack exchange,提问作者MW_DEVEL
相关产品推荐
相关产品推荐

