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

Oracle APEX 21.2.8:限制交互式网格仅勾选一个复选框

Oracle APEX 21.2.8 交互式网格实现单选复选框方案

针对你遇到的动态动作触发失效问题,这里提供两种基于APEX原生机制的可行方案,确保动态渲染的行也能正常响应单选逻辑:

方案一:动态动作+IG模型操作

  1. 给复选框列设置静态ID(比如single_select),在列属性的「标识」选项卡中配置。
  2. 创建动态动作:
    • 触发条件选「JavaScript表达式」,输入:
      $("input[type='checkbox'][id*='single_select']").is(":checked")
      
    • 触发事件选「Change」,作用域必须选「动态」(否则分页或新加载的行无法绑定事件)。
    • True操作添加「执行JavaScript代码」,替换YOUR_IG_STATIC_ID为你的交互式网格静态ID后输入:
      const currentCheckbox = $(this.triggeringElement);
      const currentRow = currentCheckbox.closest(".a-GV-row");
      const igInstance = apex.region("YOUR_IG_STATIC_ID").widget();
      const currentRecordId = currentRow.data("id");
      
      // 遍历所有记录,取消非当前行的勾选状态
      igInstance.model.forEach(record => {
          if (record[igInstance.model.idAttribute] !== currentRecordId) {
              record.set("single_select", false);
          }
      });
      
      // 刷新视图同步UI显示
      igInstance.view.refresh();
      

方案二:列初始化代码绑定事件(更简洁)

直接在复选框列属性中配置,无需额外创建动态动作:

  1. 编辑复选框列,切换到「高级」选项卡。
  2. 在「JavaScript初始化代码」中输入:
    function(options) {
        // 设置默认未勾选
        options.defaultValue = false;
    
        // 每一行渲染完成后绑定事件
        options.afterCreate = function(rowNode, value, record, opts) {
            const checkbox = rowNode.querySelector("input[type='checkbox']");
            checkbox.addEventListener("change", function() {
                if (!this.checked) return;
    
                const ig = apex.region(opts.regionId).widget();
                // 遍历所有记录取消其他行勾选
                ig.model.forEach(rec => {
                    if (rec[ig.model.idAttribute] !== record[ig.model.idAttribute]) {
                        rec.set(opts.column.name, false);
                    }
                });
                ig.view.refresh();
            });
        };
        return options;
    }
    
    这段代码会自动给每一行的复选框绑定change事件,实时处理单选逻辑。

关键注意点

  • 务必确保交互式网格和复选框列的静态ID配置正确,否则无法定位元素或获取IG实例。
  • 若IG开启分页,切换页面后之前页的勾选状态会保留;如果需要全局唯一选中,可以额外添加一个页项存储当前选中的记录ID,切换页时清空其他页的勾选状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:42:51