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

Oracle Apex交互式网格:如何在数据加载后触发验证而非提交时?

Oracle Apex交互式网格:加载完成后触发验证的实现方案

完全可行,以下是两种实操方案,可根据你的验证逻辑类型选择:

一、前端触发内置验证逻辑

利用交互式网格的gridviewmodelcreate事件(数据加载完成后自动触发),调用网格的验证API实现即时验证:

  1. 打开目标交互式网格的属性面板,定位到高级 > JavaScript初始化代码
  2. 粘贴以下代码:
    function(options) {
        var grid = options.grid;
        // 监听数据加载完成事件
        grid.subscribe("gridviewmodelcreate", function() {
            // 获取验证管理器并触发全网格验证
            const validationManager = grid.view$.grid("getValidationManager");
            validationManager.validateAll();
            // 即时显示错误提示
            grid.view$.grid("showValidationErrors");
        });
        return options;
    }
    

如果只需验证特定列,可修改为针对列的验证:

function(options) {
    var grid = options.grid;
    grid.subscribe("gridviewmodelcreate", function() {
        const model = grid.model;
        // 遍历所有行,验证指定列(示例:EMP_ID列)
        model.forEach(record => model.validateColumn(record, "EMP_ID"));
        // 显示错误
        grid.view$.grid("showValidationErrors");
    });
    return options;
}

二、结合后端验证逻辑

如果你的验证依赖数据库约束或自定义PL/SQL逻辑,可通过后端验证+前端展示的方式实现:

  1. 编写PL/SQL过程,验证已加载的数据,返回错误记录的ID、列名和错误信息(建议用JSON格式输出)
  2. 在页面的页面加载后处理中,调用该过程,将结果存入页面项(比如P1_VALIDATION_ERRORS)
  3. 在交互式网格的JavaScript初始化代码中,读取页面项的错误信息并添加到网格:
    function(options) {
        var grid = options.grid;
        grid.subscribe("gridviewmodelcreate", function() {
            const errors = JSON.parse($v("P1_VALIDATION_ERRORS"));
            const validationManager = grid.view$.grid("getValidationManager");
            
            errors.forEach(err => {
                const record = grid.model.getRecord(err.record_id);
                // 为对应列添加错误提示
                validationManager.addError(record, err.column_name, err.message);
            });
            
            grid.view$.grid("showValidationErrors");
        });
        return options;
    }
    

注意事项

  • 性能优化:数据量较大时,避免全量验证,仅针对关键列或有约束的列执行验证
  • 规则一致性:前后端验证逻辑需保持统一,避免出现矛盾的错误提示
  • 分页场景:若开启分页,需额外监听pagechange事件,在分页切换时重新触发验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:42:35