在IG报表自动DML中如何将选择列表值正确写入隐藏数据库列
解决方案:同步筛选器值到IG自动DML列
问题根源
出现“存储上一次选中值”的情况,核心是筛选器的当前值没有在DML执行时同步到IG的绑定变量中,通常是页面状态未更新或绑定逻辑未关联最新值导致的。
优先方案:无需Application Item
直接通过页面项同步和配置IG DML绑定即可解决:
- 确保筛选器值实时同步
- 如果允许整页提交:将Select list的「提交页面」属性设为「是」,值变化时页面刷新,页面项会携带最新值。
- 避免整页提交:创建动态动作,触发条件设为「当Select list值改变」,执行「设置值」动作,将筛选器的页面项(如
:P1_FILTER)赋值给IG隐藏列对应的页面项(如:P1_HIDDEN_COL),确保值实时更新。
- 配置IG自动DML绑定
进入IG编辑界面,依次打开「处理」→「自动DML」→「创建」:- 找到目标隐藏列,在「源」字段直接引用筛选器的页面项(如
:P1_FILTER),而非静态值或缓存变量。 - 确认DML执行时,该页面项的最新值能被正确读取。
- 找到目标隐藏列,在「源」字段直接引用筛选器的页面项(如
Application Item的适用场景
只有当你需要跨页面复用该筛选值,或多个独立流程需要共享这个值时,才需要使用Application Item:
- 创建一个Application Item(如
AI_FILTER_VALUE)。 - 用动态动作在Select list值变化时,执行PL/SQL代码:
:AI_FILTER_VALUE := :P1_FILTER; - 在IG的DML绑定中引用
:AI_FILTER_VALUE作为隐藏列的源。
常见排查要点
- 检查页面缓存:如果页面开启了缓存,需设置缓存依赖于筛选器的页面项,避免旧值被缓存。
- 动态动作执行顺序:确保赋值动作在IG的DML触发(如「新增行」按钮点击)之前执行,保证值已更新。
内容的提问来源于stack exchange,提问作者Anshul Ayushya
相关产品推荐
相关产品推荐

