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

从IG获取更新值存入P12_EMPNO页面元素失败问题求助

如何将Oracle APEX交互式网格的更新值存入页面元素P12_EMPNO?

问题描述

我尝试在动态操作(DA)中使用以下JavaScript代码,将交互式网格(IG)内的更新值存储到页面元素P12_EMPNO中,但P12_EMPNO并未成功获取到更新后的值。需求为仅保存更新后的值,例如原有值1003更新为1004时,需将1004存入P12_EMPNO。涉及页面12。

尝试的代码

var changedValue = apex.item("N001").getValue();
apex.item("P12_EMPNO").setValue(changedValue);

环境信息

  • Oracle APEX地址:https://apex.oracle.com/pls/apex/
  • 工作区:shajin_wk
  • 用户名:Test
  • 密码:Test@123

解决方法

1. 避免硬编码DOM元素ID,使用IG API获取更新值

APEX自动生成的元素ID(如N001)不稳定,会随页面配置变化。正确做法是通过IG的官方API获取修改后的数据:

// 替换为你的交互式网格静态ID
var igStaticId = "YOUR_IG_STATIC_ID";
// 获取IG实例
var ig = apex.region(igStaticId).widget().interactiveGrid("getViews", "grid");
// 获取所有已修改的行记录
var modifiedRows = ig.model.getRecords({modified: true});

// 若有修改的行,提取目标列的更新值
if (modifiedRows.length > 0) {
    // 替换为你的目标列名称(如EMPNO)
    var fieldKey = ig.model.getFieldKey("EMPNO");
    var changedValue = modifiedRows[0][fieldKey];
    // 赋值给页面元素
    apex.item("P12_EMPNO").setValue(changedValue);
}

2. 调整动态操作的触发配置

  • 触发事件选择交互式网格 - 行已更新(Interactive Grid - Row Updated),确保在值完成更新后执行代码。
  • 确认动态操作的作用域覆盖目标交互式网格,避免作用域错误导致代码不执行。

3. 验证页面元素状态

  • 确保P12_EMPNO未设置只读属性或隐藏状态,否则可能无法接收赋值。
  • 检查元素ID拼写是否正确,避免因ID错误导致无法定位元素。

4. 调试确认数据流向

在代码中添加控制台日志,排查值是否正确获取:

var igStaticId = "YOUR_IG_STATIC_ID";
var ig = apex.region(igStaticId).widget().interactiveGrid("getViews", "grid");
var modifiedRows = ig.model.getRecords({modified: true});

console.log("已修改的行记录:", modifiedRows);
if (modifiedRows.length > 0) {
    var fieldKey = ig.model.getFieldKey("EMPNO");
    var changedValue = modifiedRows[0][fieldKey];
    console.log("提取的更新值:", changedValue);
    apex.item("P12_EMPNO").setValue(changedValue);
}

打开浏览器开发者工具(F12)的控制台,查看日志确认数据是否符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:05:17