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

Oracle APEX:交互式网格选中行ID跨页面传递失败问题

问题分析与解决方案

问题根源

你用JavaScript动态设置的隐藏项值,仅保存在浏览器客户端内存中,并未同步到APEX的服务器端会话状态。而APEX页面跳转时,默认是基于服务器端会话中存储的项值进行参数传递,所以即便客户端能拿到值,服务器端没有这个值,跳转后目标页面自然接收不到。

解决方案

方案1:设置项值时同步提交到服务器

修改你Selection Change动态动作里的JavaScript代码,使用APEX官方的apex.itemAPI并开启服务器端同步:

// 获取IG选中行的PK_CONCE值
var ig = apex.region("YOUR_IG_STATIC_ID").widget().interactiveGrid("getViews", "grid");
var selectedRow = ig.model.getSelectedRecords()[0];
if (selectedRow) {
  var pkValue = selectedRow.values.PK_CONCE;
  // 第二个参数true表示将值提交到服务器会话
  apex.item("P16_PK_CONCE").setValue(pkValue, true);
}

这样设置后,隐藏项的值会同时更新客户端和服务器端会话状态,跳转按钮传递参数时就能正常读取到这个值。

方案2:跳过隐藏项,直接从IG传递参数

如果不想依赖隐藏项,可以直接在跳转按钮的导航设置中,从Interactive Grid获取选中行ID并传递:

  1. 编辑跳转按钮的“导航到页面”动作
  2. 在“设置项”区域,添加目标页面的Popup-LOV项
  3. 将“值”的类型改为JavaScript表达式,填入以下代码:
var ig = apex.region("YOUR_IG_STATIC_ID").widget().interactiveGrid("getViews", "grid");
var selectedRow = ig.model.getSelectedRecords()[0];
return selectedRow ? selectedRow.values.PK_CONCE : null;

这样按钮跳转时会直接从IG获取选中行ID,无需经过隐藏项,避免客户端/服务器端值不同步的问题。

方案3:检查会话状态保护设置(可选)

如果上述方案无效,检查隐藏项P16_PK_CONCE的“会话状态保护”属性:

  • 确保设置为Unrestricted(无限制),或者根据你的安全需求设置为合适的选项,避免因会话保护导致值无法被传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:04:58