You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Apex 22中IG多次点击保存后新增行未触发验证

Oracle Apex 22 Interactive Grid 全行列验证问题解决方法

针对你遇到的问题——首次保存错误行后,新增空行再保存时只有旧行高亮错误、新行无提示但弹出错误框的情况,可以通过以下几种方式解决,确保每次保存时所有行都执行验证并显示错误:

1. 强制触发全行列验证的JavaScript方案

找到页面上的保存按钮,修改其行为为执行自定义JavaScript代码,手动触发IG的所有行验证后再执行保存:

// 替换为你的Interactive Grid静态ID
var igWidget = apex.region("IG_STATIC_ID").widget();
var gridView = igWidget.interactiveGrid("getViews", "grid");

// 触发所有行的验证
gridView.validateAllRows();

// 检查验证结果,有效再执行保存
if (gridView.isValid()) {
    // 替换为保存按钮的请求值(在按钮属性的Request项中查看)
    apex.submit("SAVE_REQUEST");
} else {
    // 强制显示所有错误提示
    apex.message.showErrors();
}

2. 改用行级验证替代列级验证

如果列级验证的范围有限,创建行级验证来覆盖所有需要检查的列:

  • 进入IG的验证设置,新建行级验证
  • 类型选择“PL/SQL表达式”,输入验证逻辑,比如需要检查COL1和COL2非空:
    :COL1 IS NOT NULL AND :COL2 IS NOT NULL
    
  • 设置验证的显示方式为“Display inline and in notification”,确保错误会在行内和通知框中显示

3. 调整IG的验证属性

检查IG的全局验证设置,确保开启“保存时验证所有行”:

  • 打开IG的属性编辑页面
  • 导航到“验证”选项卡
  • 勾选“保存时验证所有行”(部分版本可能在“高级”或“行为”分类下)

问题原因说明

Apex 22的Interactive Grid默认可能仅对有数据变更的行执行验证,未提交的新增空行如果没有触发过单元格交互,可能会被跳过验证流程。通过上述方法,可以强制所有行在保存时都经过验证逻辑,确保错误提示完整显示。

内容的提问来源于stack exchange,提问作者user2924127

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:49:55