如何获取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
相关产品推荐
相关产品推荐

