Oracle Apex中通过JS实现同标签页左右页面项的逐值复制

Oracle Apex 页面项逐值复制实现方案
适配现有配置的快速实现
你当前已完成触发按钮、对应动态动作、Set Value操作绑定、目标项关联的基础配置,仅需调整Set Value模块的参数即可完成功能:
- 将Set Value下的**设置类型(Set Type)**从默认静态值切换为 JavaScript Expression(JS表达式)
- 确认「受影响项」列表的排列顺序为
P1_A1、P1_B1、P1_C1,返回的JS数组顺序必须与该顺序严格匹配,避免值错位 - 在JS表达式输入框填入以下映射代码:
[ apex.item('P1_A').getValue(), apex.item('P1_B').getValue(), apex.item('P1_C').getValue() ]
无错位风险的备选实现
如果后续可能调整受影响项的排列顺序,可改用直接指定目标项的赋值逻辑,完全不依赖受影响项排序:
- 仍保持Set Type为JavaScript Expression
- 可清空「受影响项」列表的所有关联配置,在JS表达式中直接完成源值到目标值的映射:
// 逐组同步值,自动保持Apex内部状态一致 apex.item('P1_A1').setValue(apex.item('P1_A').getValue()); apex.item('P1_B1').setValue(apex.item('P1_B').getValue()); apex.item('P1_C1').setValue(apex.item('P1_C').getValue());
开发注意点
- 取值、赋值统一使用
apex.item()方法,不要直接通过DOM操作修改页面项的value属性,否则会导致Apex内部状态不同步,无法正常触发目标项的后续联动逻辑 - 该实现对文本输入框、日期选择器、多选列表、富文本编辑器等全类型Apex页面项均兼容
- 如果复制值后不需要触发目标项的变更联动事件,可勾选Set Value模块下的Suppress Change Event选项
内容的提问来源于stack exchange,提问作者Souheil MHIRI
相关产品推荐
相关产品推荐

