Oracle APEX:如何在会话状态中保存Popup LOV选中值
在Oracle APEX中保存Popup LOV填充的页面项到会话状态
针对你的需求,有两种实用的动态操作(DA)方案可选,可根据使用场景选择:
方案1:Popup LOV选择后立即保存(推荐)
这个方案能让你在选择完Popup LOV后,立刻把填充的页面项值同步到会话状态,后续页面上的任何逻辑都能直接使用这些值:
- 创建新动态操作,触发事件选择Change,触发元素选你的Popup LOV页面项
- 添加动作:Set Session State
- 在「Items to Set」列表中,添加所有被Popup LOV填充的页面项
- 每个项的「Value」选择Item Value(即页面项当前的客户端值)
- 保存后,每次选择Popup LOV记录,这些项的值就会自动写入会话状态
方案2:提交前批量保存
如果只需要在提交前统一同步值,可以用页面级的Before Submit事件:
- 创建新动态操作,触发事件选择Before Submit(页面范围触发)
- 添加动作:Set Session State
- 同样添加需要保存的页面项,每个项的「Value」设为Item Value
- 这个DA会在用户点击提交按钮后、页面实际提交前,把所有指定项的值同步到会话状态
自定义PL/SQL处理(可选)
如果需要额外的逻辑处理(比如值校验、转换),可以把动作换成Execute PL/SQL Code,示例代码:
-- 把页面项值赋值给会话状态项 :P_SESSION_EMP_ID := :P_PAGE_EMP_ID; :P_SESSION_EMP_NAME := :P_PAGE_EMP_NAME; -- 这里可以加自定义逻辑,比如格式转换、校验
记得在「Page Items to Submit」中添加所有用到的页面项(比如P_PAGE_EMP_ID、P_PAGE_EMP_NAME),确保PL/SQL能获取到客户端的最新值。
注意:Popup LOV通过「Additional Return Items」填充页面项的操作是客户端行为,不会自动同步到会话状态,必须通过上述DA主动触发保存。
内容的提问来源于stack exchange,提问作者Coding Duchess
相关产品推荐
相关产品推荐

