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

Oracle Apex24.2主明细表单:交互式网格列独立显示及数据操作需求

Oracle Apex 24.2 主明细表单:将交互式网格「details」列独立展示并保持编辑能力

核心思路

通过隐藏交互式网格(IG)中原有的details列,创建独立页面项与IG进行双向数据同步,同时保留IG本身的增删改逻辑,实现独立列的编辑能力。


步骤1:隐藏IG中的details列

  1. 编辑明细表单的交互式网格区域
  2. 找到details列,将显示属性设置为「隐藏」
  3. 确保该列的「允许插入」「允许更新」「允许删除」属性保持开启(这是后续同步编辑的基础)

步骤2:创建独立的details页面项

  1. 在页面目标位置添加一个**Text Area (Enhanced)**类型的页面项(命名示例:PXX_DETAILS,XX为当前页面编号)
  2. 无需设置「来源」,数据将通过JS与IG同步

步骤3:实现IG选中行与页面项的单向同步(IG → 页面项)

编辑交互式网格的JavaScript初始化代码,添加行选择监听逻辑:

function(config) {
    config.initActions = function(ig) {
        // 监听行选择变化
        ig.view$.on('interactivegridrowselectionchange', function(event, data) {
            if (data.selectedRecords.length > 0) {
                var selectedRow = data.selectedRecords[0];
                var detailsKey = ig.model.getFieldKey('DETAILS'); // 替换为实际数据库列名
                apex.item('PXX_DETAILS').setValue(selectedRow[detailsKey]);
            } else {
                apex.item('PXX_DETAILS').setValue('');
            }
        });
        // 初始化时同步默认选中行数据
        var initialSelected = ig.view$.grid('getSelectedRecords');
        if (initialSelected.length > 0) {
            var detailsKey = ig.model.getFieldKey('DETAILS');
            apex.item('PXX_DETAILS').setValue(initialSelected[0][detailsKey]);
        }
        return config;
    };
    return config;
}

替换代码中的PXX_DETAILS为你的页面项名称,DETAILS为数据库表的实际列名

步骤4:实现页面项到IG选中行的反向同步(页面项 → IG)

给独立页面项添加动态动作:

  1. 触发条件:「失去焦点」或「更改」
  2. 动作类型:「Execute JavaScript Code」
  3. 代码内容:
var igRegion = apex.region('YOUR_IG_STATIC_ID').widget().interactiveGrid('getViews','grid');
var selectedRows = igRegion.getSelectedRecords();
if (selectedRows.length > 0) {
    var newDetails = apex.item('PXX_DETAILS').getValue();
    var detailsKey = igRegion.model.getFieldKey('DETAILS');
    igRegion.model.setValue(selectedRows[0], detailsKey, newDetails);
}

替换YOUR_IG_STATIC_ID为交互式网格的静态ID,PXX_DETAILS和DETAILS对应实际名称

步骤5:处理新增行的同步逻辑

给交互式网格添加动态动作:

  1. 触发条件:「行初始化」,并勾选「新增行」
  2. 动作类型:「Execute JavaScript Code」
  3. 代码内容:
apex.item('PXX_DETAILS').setValue('');

验证测试

完成配置后,验证以下场景:

  • 选中IG不同行,独立页面项自动同步对应details值
  • 修改页面项内容,IG选中行的details列同步更新(可临时显示IG的details列验证)
  • 新增IG行时,页面项自动清空
  • 删除IG行后,页面项清空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:12:11