Oracle APEX交互式报表Checkbox Validation 至少选中1个复选框校验实现
Oracle APEX 交互式报表复选框至少选1项校验方案
方案1:客户端JS校验(响应速度快,无需触发服务端请求)
- 首先给交互式报表的复选框列统一配置自定义CSS类,比如命名为
report-checkbox,配置入口在列属性的「外观」→「CSS类」中 - 给触发提交动作的按钮(例如提交、批量删除等按钮)新建动态动作,事件选择「点击」,动作选择「执行JavaScript代码」,代码内容如下:
// 统计已选中的复选框数量 const checkedNum = document.querySelectorAll('.report-checkbox:checked').length; if (checkedNum === 0) { // 抛出APEX原生错误提示 apex.message.showError('请至少选择一个复选框'); // 阻止后续提交动作执行 return false; }
- 动态动作的「执行选项」中关闭「初始化时触发」配置,确认触发元素为对应提交按钮即可。
方案2:服务端校验(安全性更高,避免前端校验被恶意绕开)
- 先给交互式报表的复选框列配置「返回值到页面项」,绑定到一个提前新建的页面隐藏项,比如
P1_SELECTED_IDS,复选框选中的主键值会自动以冒号分隔的字符串格式存入该隐藏项 - 新建页面级验证,验证类型选择「PL/SQL表达式」,表达式内容如下:
:L(P1_SELECTED_IDS) IS NOT NULL
- 验证的「错误消息」栏填写
请至少选择一个复选框,「执行条件」设置为对应提交按钮触发时执行即可。
两种方案可搭配使用:前端校验降低服务端消耗、提升操作体验,服务端校验保证业务逻辑安全性。
内容的提问来源于stack exchange,提问作者Abinnaya
相关产品推荐
相关产品推荐

