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

Dynamic List View通过WHERE子句绑定项值实现无刷新更新问题咨询

解决方案

你当前配置的问题出在刷新List View区域时,未将Select List的最新值同步到APEX会话状态,同时你的Select List查询返回值和查询条件不匹配,导致SQL查询的绑定变量读取不到正确值,按如下步骤调整即可:

步骤1:调整动态动作配置

删除原有动态动作里的空PL/SQL执行步骤,重新配置动态动作如下:

  • 触发源:P1_SELECT_LIST
  • 触发时机:On Change
  • 动作1:提交页面项
    • 需提交的项:填入P1_SELECT_LIST,这一步仅将下拉框的最新值同步到会话状态,不需要执行任何PL/SQL逻辑
  • 动作2:刷新区域
    • 刷新目标:P1_LIST_VIEW
    • 执行时机设置为上一个动作完成后

步骤2:修正基础属性配置

  • 检查P1_LIST_VIEW区域的要提交的页面项属性:填入P1_SELECT_LIST,确保刷新区域时会自动携带该项的最新值作为查询参数
  • 修正P1_SELECT_LIST的SQL查询:APEX的Select List查询规则是SELECT 显示值, 返回值 FROM 表,你当前的查询返回值为emp_id,和WHERE条件的manager_id不匹配,调整为:
SELECT DISTINCT manager_id, manager_id
FROM emp;

如果需要显示经理姓名,改为SELECT emp_name, manager_id FROM emp WHERE emp_id = manager_id即可。

可选无绑定变量实现方案

如果你不想用绑定变量,也可以用客户端过滤实现,完全不需要服务端请求:

  1. 先把List View的SQL查询去掉WHERE条件,查询全量数据:
SELECT DISTINCT emp_name, emp_id, manager_id
FROM emp;
  1. 给List View的每一行模板加上自定义属性data-manager="&MANAGER_ID."
  2. 给P1_SELECT_LIST的On Change事件加JS代码,直接过滤行:
const selectedManager = apex.item('P1_SELECT_LIST').getValue();
$('[data-manager]').each(function() {
  $(this).toggle($(this).data('manager') == selectedManager);
});

这种方案响应速度更快,适合数据量不大的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:09:03