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

Oracle APEX 23.1交互式网格保存后更改列标记未消失且列不可编辑

Oracle APEX 23.1 交互式网格保存后红色标记残留&列不可编辑修复方案

针对你遇到的问题,可通过页面动态动作结合JavaScript实现无刷新修复,具体步骤如下:

1. 给目标交互式网格设置静态ID

编辑你的交互式网格属性,在高级标签页中设置静态ID(比如target_ig,自定义名称即可),确保后续JS能精准定位到这个IG,不会影响页面上的其他交互式网格。

2. 创建页面动态动作

  • 触发条件配置:
    选择事件为 Interactive Grid - Save Success,选择类型为区域,然后选中目标IG所在的区域。
  • 动作配置:
    选择执行JavaScript代码,粘贴以下代码:
// 获取目标IG实例
const igInstance = apex.region('target_ig').widget().interactiveGrid('getViews','grid');
const igModel = igInstance.model;

// 移除列标题的红色脏标记
igInstance.element.find('.aig-header-dirty').removeClass('aig-header-dirty');

// 遍历所有列,恢复可编辑状态并移除灰色样式
igModel.getColumns().forEach(col => {
    if (col.editable) {
        col.editable = true;
        igInstance.element.find(`[data-column="${col.name}"]`).removeClass('apex-disabled');
    }
});

// 重置IG内部的脏状态记录
igModel._dirtyRows = {};
igModel._dirtyFields = {};
igModel._newRows = [];

// 刷新IG视图,应用状态变更(无页面刷新)
igInstance.view$.grid('refresh');

3. 验证效果

添加新行并点击保存按钮,此时红色标记会自动消失,列也会恢复为可编辑的白色状态,全程无需刷新整个页面。

代码说明

  • .aig-header-dirty是APEX用于标记列存在脏数据的CSS类,移除该类即可消除红色标记;
  • 重置_dirtyRows、_dirtyFields、_newRows是清除IG内部维护的脏状态数据,避免后续误判;
  • 调用refresh()仅更新IG视图,不会触发页面整体刷新,完美适配多IG共存的页面场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:05:14