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

Oracle APEX IG获取所有记录EMPL_STAT1列select list返回值方法

问题背景

我的Interactive Grid包含名为EMPL_STAT1的列。
目前使用如下代码获取选中记录中该列select list的返回值,代码可正常运行:

var reg = apex.region('ig_emp').widget();
var grid = reg.interactiveGrid("getViews","grid");
var model = reg.interactiveGrid("getViews","grid").model;
var selectedRecords = grid.getSelectedRecords();

for (i = 0; i < selectedRecords.length; i++)
    {
        record = model.getRecord(selectedRecords[i][0]);
        itemcodeField = model.getFieldKey("EMPL_STAT1");
        alert(record[itemcodeField].v);
    }

现需要调整代码逻辑,获取EMPL_STAT1列下**所有记录(而非仅选中记录)**对应的select list返回值。

修改方案

核心修改逻辑是去掉选中记录的获取逻辑,直接遍历Interactive Grid对应model存储的所有记录即可,优化后代码如下:

var reg = apex.region('ig_emp').widget();
var grid = reg.interactiveGrid("getViews","grid");
var model = grid.model;
// 字段key提前在循环外获取,减少重复计算
var itemcodeField = model.getFieldKey("EMPL_STAT1");
var allRecordValues = [];

// 遍历model中所有记录,第二个参数传true表示包含未提交的新增、修改记录
model.forEachRecord(function(record) {
    // 如需过滤已标记删除的记录可保留下方判断,不需要可删除
    if (model.isDeleted(record)) {
        return;
    }
    var fieldValue = record[itemcodeField].v;
    allRecordValues.push(fieldValue);
    // 原逻辑的alert可按需保留
    // alert(fieldValue);
}, true);

// 最终allRecordValues数组存储了所有记录对应EMPL_STAT1列的select list返回值
console.log(allRecordValues);

注意事项

  • 如果Interactive Grid开启了分页,上述代码仅能获取当前已加载到前端的记录。如果需要获取跨分页的全量数据,需要将IG的分页模式调整为无分页,或者开启滚动加载加载全部数据,未加载到前端的分页数据无法通过前端JS直接读取。
  • forEachRecord方法的第二个参数传入true时,会包含用户在页面上新增但未提交的记录,传入false则仅读取初始加载的已保存记录,可根据实际需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:09:14