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

Oracle APEX:基于薪资列动态设置佣金列只读的代码报错排查

解决Oracle APEX Interactive Grid动态设置COMM列只读问题

原代码的核心错误

  • API调用错误:apex.region("mygrid").call是错误用法,Oracle APEX的Interactive Grid需通过widget().interactiveGrid()调用API方法。
  • 逻辑错误:仅获取选中行的薪资值,未遍历每行获取对应行的薪资,导致所有行共用同一个选中行的判断条件。
  • 只读设置方式错误:直接修改commCell.attributes.readOnly无法正确触发IG的编辑状态变更,需使用官方API设置单元格可编辑性。

正确实现代码

方法1:页面加载/批量更新时遍历所有行设置

// 获取Interactive Grid实例
var ig = apex.region("mygrid").widget().interactiveGrid("getViews", "grid");
var model = ig.model;

// 遍历每一行记录
model.forEach(function(record) {
    // 获取当前行的SAL值
    var salValue = record.getValue("SAL");
    // 定位COMM列
    var commColumn = ig.view$.grid("getColumns").find(function(col) {
        return col.property === "COMM"; // 对应数据库列名或列别名
    });

    // 根据薪资设置COMM列编辑状态
    if (salValue <= 2000) {
        ig.model.setCellEditable(record, commColumn, false);
    } else {
        ig.model.setCellEditable(record, commColumn, true);
    }
});

// 刷新视图使变更生效
ig.view$.grid("refresh");

方法2:编辑SAL列时实时触发状态变更

如果需要用户修改SAL值后立即更新COMM列的只读状态,可绑定IG的编辑事件:

// 绑定Interactive Grid的编辑事件
apex.region("mygrid").widget().interactiveGrid("getViews", "grid").view$.on("interactivegridedit", function(event, ui) {
    var ig = apex.region("mygrid").widget().interactiveGrid("getViews", "grid");
    var record = ui.record;
    var column = ui.column;

    // 仅在编辑SAL列时触发
    if (column.property === "SAL") {
        var salValue = record.getValue("SAL");
        var commColumn = ig.view$.grid("getColumns").find(function(col) {
            return col.property === "COMM";
        });

        if (salValue <= 2000) {
            ig.model.setCellEditable(record, commColumn, false);
        } else {
            ig.model.setCellEditable(record, commColumn, true);
        }
        // 刷新当前行视图
        ig.view$.grid("refreshRow", record);
    }
});

关键说明

  • 确保mygrid是你的Interactive Grid的Static ID(在IG属性面板中设置)。
  • 列的property对应数据库表的列名或配置时使用的别名。
  • setCellEditable是官方推荐的修改单元格可编辑性的方法,能正确同步IG的模型与视图状态。

内容的提问来源于stack exchange,提问作者muhammad adil islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:32:06