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

Oracle APEX 24.2.3中JavaScript无法捕获多个交互式网格数据的问题

Oracle APEX 24.2.3中JavaScript无法捕获多个交互式网格数据的问题

看起来你在尝试用JavaScript抓取多个交互式网格(IG)的数据时,碰到了所有记录都返回undefined的麻烦,我来帮你排查下问题,顺便给你一个靠谱的解决方案。

首先看你贴的代码,里面有个明显的笔误——var grid = reg这行没写完对吧?这可是获取IG数据的关键前提,没补全这步肯定拿不到有效数据。我先把你的函数修正并补全,再给你讲讲正确的操作姿势:

第一步:修正基础函数的错误

你原来的函数里,缺少了获取IG核心实例的关键步骤,正确的getIGData函数应该是这样的:

function getIGData(staticId) {
    console.log('Getting data for region:', staticId);
    // 先获取APEX区域对象
    var region = apex.region(staticId);
    if (!region) {
        console.error('Region not found:', staticId);
        return [];
    }
    
    // 关键:获取交互式网格的widget实例,这是操作IG数据的核心对象
    var grid = region.widget();
    if (!grid || !grid.model) {
        console.error('Interactive Grid widget/model not found for region:', staticId);
        return [];
    }
    
    // 获取所有记录(如果只需要已修改的记录,换成grid.model.getUpdatedRecords()即可)
    var records = grid.model.getRecords();
    // 把模型内部的记录对象转换成易读的键值对格式
    var gridData = records.map(function(record) {
        return grid.model.getRecordValues(record);
    });
    
    console.log('Fetched data for', staticId, ':', gridData);
    return gridData;
}

第二步:处理多个交互式网格的情况

要抓取多个IG的数据,只需要循环调用上面的函数就行,比如你有两个IG的staticId分别是ig_employees和ig_departments,可以这么做:

function getAllIGData() {
    // 定义需要抓取的所有IG的staticId列表
    var igStaticIds = ['ig_employees', 'ig_departments'];
    var allData = {};
    
    igStaticIds.forEach(function(id) {
        allData[id] = getIGData(id);
    });
    
    // 这里可以对整合后的allData做后续操作,比如提交到后台处理
    console.log('All IG data collected:', allData);
    return allData;
}

为什么你之前会得到undefined?

大概率是这几个原因:

  • 没有正确获取IG的widget实例:直接用apex.region(staticId)拿到的是区域容器对象,不是IG的操作实例,必须调用.widget()才能拿到包含数据模型的核心对象
  • 没使用模型的正确方法:要获取有效数据,得先用model.getRecords()拿到记录集合,再用getRecordValues()把内部记录对象转换成普通键值对,不然直接操作记录对象就会出现undefined
  • 代码笔误:比如你写的var grid = reg明显没写完,这会导致后续所有调用直接报错

现在你可以试试上面的代码,应该就能正常抓取到多个IG的数据了。

备注:内容来源于stack exchange,提问作者fesm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:24:27