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

Popup LOV已选值移除需求及状态变更后空白异常解决方案咨询

解决Popup LOV提交后显示空白的问题

我来帮你梳理下这个问题的核心和解决方案:当你选择机器提交后,它的idlemachine状态会被改成'N',原来的LOV查询只筛选idlemachine = 'Y'的记录,自然找不到已提交的那条,导致LOV显示空白。下面是几个针对性的解决办法:

  • 方案1:让已选中的机器始终在LOV中显示
    修改你的LOV SQL语句,加入一个条件:如果是当前表单已经选中的机器ID,不管它的空闲状态如何都要包含进来。假设你的表单中存储选中机器ID的项是P1_MACHINEID,修改后的SQL如下:

    select machineid, machinenm 
    from machinemaster 
    where idlemachine = 'Y' 
       or machineid = :P1_MACHINEID;
    

    这样既保证了空闲机器能正常出现在LOV供选择,又能让已提交的机器(状态非空闲)依然在LOV中显示,避免空白问题。

  • 方案2:提交后切换为仅显示文本
    如果业务上提交后不需要再修改机器选择,你可以在提交完成后,把原来的Popup LOV项隐藏,同时用一个Display Only类型的项来显示已选中的机器名称。具体可以通过动态动作实现:

    1. 创建一个Display Only项(比如P1_MACHINE_NAME)
    2. 在提交成功的动态动作中,执行PL/SQL查询获取当前机器的名称:
      select machinenm into :P1_MACHINE_NAME from machinemaster where machineid = :P1_MACHINEID;
      
    3. 隐藏Popup LOV项,显示这个Display Only项。
      这种方式更适合“提交后不可修改”的业务场景,用户能看到已选机器,但不会再触发LOV查询。
  • 方案3:设置LOV的空值显示文本
    如果你坚持LOV只显示空闲机器,但不想让已选中的机器显示空白,可以利用LOV的Null Display Value属性。通过动态动作在页面加载或提交后,把已选中机器的名称设置为这个属性值:

    1. 创建一个隐藏项(比如P1_LOV_NULL_TEXT)
    2. 在页面加载或提交成功的动态动作中,执行PL/SQL:
      declare
        v_machine_name machinemaster.machinenm%type;
      begin
        select machinenm into v_machine_name 
        from machinemaster 
        where machineid = :P1_MACHINEID;
        apex_util.set_session_state('P1_LOV_NULL_TEXT', v_machine_name);
      exception
        when no_data_found then
          apex_util.set_session_state('P1_LOV_NULL_TEXT', '无选中机器');
      end;
      
    3. 把Popup LOV的Null Display Value设置为:P1_LOV_NULL_TEXT
      这样当LOV查询不到已选中的机器时,就会显示你设置的机器名称,而不是空白。

你可以根据自己的业务需求选择最合适的方案,比如如果需要允许用户后续修改机器选择,方案1最适合;如果提交后不需要修改,方案2更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:57:36