You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX主详情页:点击主行复选框批量更新详情表字段

Oracle APEX 主详情页复选框更新详情表实现步骤

1. 配置主表报告复选框列

  • 打开页面设计器,定位到st_training_details主表的报告区域,选中已创建的复选框列
  • 在右侧属性面板的列标签下,将返回值设为t_id——这是确保选中行时能正确获取主键值的核心设置
  • 若需限制单选(避免多选导致更新逻辑冲突),可在高级标签下将选择器类型改为"单选按钮组";若必须保留复选框样式,可在页面的"函数和全局变量声明"中添加以下JavaScript:
    $(document).on('change', '.apex-item-checkbox', function() {
        if(this.checked) {
            $('.apex-item-checkbox').not(this).prop('checked', false);
        }
    });
    

2. 创建隐藏页面项存储选中ID

  • 在页面的"页面项"区域新建一个隐藏项,命名为PXX_SELECTED_T_ID(将XX替换为你的实际页面编号)
  • 该页面项用于临时存放选中行的t_id,后续更新SQL会调用它

3. 配置动态动作触发更新逻辑

  • 点击页面设计器顶部的动态动作按钮,新建动态动作:
    • 名称:更新详情表外键字段
    • 触发:选择事件为Change,选择类型为"jQuery 选择器",选择器填.apex-item-checkbox(若复选框有专属类名,可通过浏览器F12查看元素获取更精确的选择器)
    • 条件:选择"JavaScript表达式",输入this.checked——确保仅在选中复选框时触发动作,取消选中的逻辑可按需添加(比如清空详情表外键)

设置真实动作(执行更新)

  • 在动态动作的"真实动作"下,添加"执行PL/SQL代码"动作:
    • PL/SQL代码:
      UPDATE st_tni_master
      SET tni_details = :PXX_SELECTED_T_ID;
      COMMIT;
      
      (若无需更新所有详情行,可在WHERE子句中添加过滤条件,比如针对当前会话的特定数据)
    • 要提交的页面项:将PXX_SELECTED_T_ID添加至列表,确保PL/SQL能获取到选中的ID
    • 设置值:在真实动作的"设置值"部分,选择"SQL语句",输入:
      SELECT t_id FROM st_training_details WHERE t_id = :APEX$ROW_SELECTOR
      
      目标选择PXX_SELECTED_T_ID——此步骤会将当前选中行的t_id写入隐藏页面项

4. 功能测试

  • 运行页面,点击主表某行的复选框,查询st_tni_master表,检查tni_details字段是否全部更新为选中行的t_id
  • 若出现多选冲突,回到步骤1完善单选控制逻辑;若更新未生效,检查页面项的提交设置、动态动作的触发条件是否正确

内容的提问来源于stack exchange,提问作者Rohan Mathur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:12:47