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

如何获取Interactive Report选中行的ID并存储到Page Item中

Oracle APEX 交互式报表选中行ID存到页面项实现方案

默认适配Oracle APEX原生Interactive Report组件,提供两种常用实现方式:

方法1:使用原生行选择功能(推荐,适配IR过滤、分页场景)

  • 第一步:配置交互式报表属性
    打开目标IR的属性面板,找到「功能」→「行选择」,设置为单选,同时提前确认ID列的列别名(可在IR的列属性里查看修改,建议设置为简单易记的别名,比如RECORD_ID),并给IR设置一个静态ID(比如MY_TARGET_IR)。
  • 第二步:创建对应动态动作
    触发条件选择 交互式报表 > 行选择,触发对象选择你配置好的目标IR组件。
  • 第三步:添加JavaScript执行操作
    动态动作的真操作选择「执行JavaScript代码」,填入以下代码:
    // 取IR选中行的ID值,参数替换为你自己的ID列别名
    const selectedIdArr = apex.region("MY_TARGET_IR").call("getSelectedValues", "RECORD_ID");
    // 单选场景直接取数组第一个元素
    apex.item("P1_TARGET_PAGE_ITEM").setValue(selectedIdArr[0]);
    
    代码中MY_TARGET_IR替换为你给IR设置的静态ID,RECORD_ID替换为ID列的别名,P1_TARGET_PAGE_ITEM替换为你要存值的目标页面项名称。

方法2:点击行任意位置触发取值(无需显示选择框)

如果不需要显示原生选择框,想要点击行任意位置就取ID,用该方案:

  • 第一步:创建点击事件动态动作
    触发条件选择 点击,触发类型选择「jQuery选择器」,选择器填入table.apexir_WORKSHEET_DATA tr:has(td),事件范围设置为动态。
  • 第二步:添加JavaScript执行操作
    真操作选择「执行JavaScript代码」,填入以下代码:
    // eq参数为ID列在IR中的列索引,从0开始计数,比如ID是第二列就填1
    const selectedId = $(this.triggeringElement).find("td").eq(1).text().trim();
    apex.item("P1_TARGET_PAGE_ITEM").setValue(selectedId);
    
    调整eq()内的数字匹配你ID列的实际位置即可。

注意:如果你的IR启用了列隐藏、列重排功能,需要同步调整JS里的列索引,或者给ID列设置专属CSS类,通过类选择器取值避免索引失效问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:05