Oracle APEX动态动作实现:页面1表单字段填充页面2表单字段
实现Oracle APEX跨页面表单字段自动填充的方案
方法一:表单提交后通过分支传参(最简便直接)
这是最适合你的场景的方案,提交页面1后直接跳转并填充页面2字段:
- 编辑页面1,找到分支选项卡,添加新分支
- 分支触发条件设为「处理成功后」(对应CREATE按钮的表单提交成功事件)
- 分支类型选择「转到页面」,目标页面选择页面2
- 在「设置项」区域添加配置:
- 名称:
P2_AID - 值:
P1_ACCOUNT_NUM
- 名称:
- 保存分支设置,用户提交页面1表单后会自动跳转到页面2,
P2_AID将被自动填充为页面1输入的账户编号
方法二:利用会话状态+动态动作(适合非即时跳转场景)
如果用户提交页面1后不立即进入页面2,后续访问页面2时自动填充:
- 确认页面1的
P1_ACCOUNT_NUM在提交后保存到会话状态:
编辑P1_ACCOUNT_NUM页面项,在「会话状态」属性中设置「提交时保存值」为「是」(默认表单提交会自动保存,若未开启需手动设置) - 编辑页面2,添加动态动作:
- 触发条件:「页面加载时」
- 动作类型:「设置值」
- 目标项:
P2_AID - 设置类型:「PL/SQL表达式」
- 表达式:
:P1_ACCOUNT_NUM
- 只要用户会话未失效,后续进入页面2时
P2_AID会自动读取页面1提交的账户编号值
方法三:自定义DML逻辑写入会话(适合复杂业务场景)
如果需要在保存账户信息的同时强制设置P2_AID的会话值:
- 编辑页面1的表单DML处理(对应CREATE按钮的INSERT操作)
- 在处理的「成功后PL/SQL」区域添加代码:
APEX_UTIL.SET_SESSION_STATE('P2_AID', :P1_ACCOUNT_NUM); - 若账户编号是数据库序列自动生成的,替换为
:NEW.ACCOUNT_NUM(从刚插入的记录中获取主键值) - 配合页面2的页面加载动态动作,即可在进入页面2时自动填充字段
注意事项
- 确保
P2_AID页面项的「值保护」属性设为「否」,否则无法通过分支或动态动作修改其值 - 若使用序列生成账户编号,需确保获取的是实际插入到数据库的编号值,而非页面输入的临时值
内容的提问来源于stack exchange,提问作者Omatayo Holder
相关产品推荐
相关产品推荐

