从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
相关产品推荐
相关产品推荐

