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

Oracle APEX 23.2.3交互式网格Popup LOV多列赋值报错问题

Oracle APEX 23.2.3 交互式网格Popup LOV提交PROJECT_ID报错的解决方法

问题场景

  • 基于Oracle APEX 23.2.3版本,在交互式网格(IG)的多列Popup LOV中,通过「Additional Output」配置,试图同时设置Task ID列(Popup LOV所在列,为数据库列)和Project ID列的值
  • 当Popup LOV列为虚拟NULL列时,功能完全正常;当该列为数据库列时:
    • 无任务数据的空白行可正常操作
    • 已有任务数据的行打开Popup LOV时会抛出错误,但操作完成后仍能正常设置两列的值
  • 移除Popup LOV的「Items to Submit」中的PROJECT_ID后,报错消失且功能正常

原因分析

这种报错通常是因为Popup LOV打开时,提交的PROJECT_ID与当前行已存在的Task ID触发了APEX内部的参数冲突或额外验证逻辑。当Task ID已有值时,APEX尝试用当前行的PROJECT_ID过滤LOV数据源,但数据源的关联逻辑可能因Task ID已存在而出现参数传递异常,进而引发报错。

解决方案

  1. 直接移除「Items to Submit」中的PROJECT_ID
    这是已验证有效的方案,如果业务逻辑不需要在打开Popup LOV时提交PROJECT_ID来过滤选项,直接移除该参数即可解决报错,同时不影响「Additional Output」设置两列值的功能。

  2. 调整Popup LOV的数据源SQL
    如果必须提交PROJECT_ID来过滤LOV选项,需要修改LOV的查询语句,处理Task ID不为空时的参数冲突问题。例如:

    SELECT task_name AS display_value, task_id AS return_value, project_id
    FROM tasks
    WHERE (:P_PROJECT_ID IS NULL OR project_id = :P_PROJECT_ID)
      AND (:P_TASK_ID IS NULL OR task_id != :P_TASK_ID)
    

    加入task_id != :P_TASK_ID条件,排除当前行已选中的Task ID,避免参数冲突导致的报错。

  3. 改用动态动作替代Additional Output
    若上述方法仍无法解决问题,可以放弃Popup LOV的「Additional Output」配置,改用动态动作实现两列赋值:

    • 创建动态动作,触发条件设为「Popup LOV值变化」
    • 在执行步骤中选择「执行JavaScript代码」,示例代码如下:
      var ig = apex.region("YOUR_IG_STATIC_ID").widget();
      var model = ig.interactiveGrid("getViews", "grid").model;
      var currentRecord = model.getCurrentRecord();
      var selectedTaskId = this.triggeringElement.value;
      
      // 通过AJAX获取对应Task ID的Project ID
      apex.server.process("GET_PROJECT_BY_TASK", {x01: selectedTaskId}, {
        success: function(response) {
          model.setValue(currentRecord, "PROJECT_ID", response);
        }
      });
      
    • 创建AJAX进程GET_PROJECT_BY_TASK,输入参数为x01(接收Task ID),执行查询返回对应的Project ID:
      SELECT project_id FROM tasks WHERE task_id = :x01
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:13:17