Interactive Grid 5.1:我想抑制初始搜索,这意味着没有过滤器"没有搜索。怎么样?
答案 0 :(得分:0)
出于测试目的,我基于Scott的EMP表创建了一个交互式网格(IG)。默认情况下,一旦页面运行,它就会检索所有员工,因为IG查询中没有WHERE
条件。
然后我打开DEBUG模式,进入"国王"进入搜索栏并点击 Enter 键。当然,King的数据显示在屏幕上,但这不是有趣的部分 - 调试信息是。
如果你看一下,你会发现Apex改写了你的原作"查询并添加了一些额外的信息。这就是你要找的东西:
Rewrite SQL to: select a.* from (select q.*,count(*) over () "APEX$TOTAL_ROW_COUNT"
from(select q.*
from(select "ROWID" "APEX$ROWID","EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO"
from(select EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
from EMP
)q
)q
where (1=2 or upper(q."ENAME") like :apex$1 or upper(q."JOB") like :apex$2)
)q
)a
where ROWNUM <= :p$_max_rows
注意WHERE
条款:
where (1=2 or upper(q."ENAME") like :apex$1 or upper(q."JOB") like :apex$2)
啊哈!由于ENAME和JOB是唯一的VARCHAR2列,似乎Apex希望这些值中的任何一个都能过滤数据。好的,我把我自己的IG SELECT
声明改写为
select EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
from EMP
where :apex$1 is not null and :apex$2 is not null --> added this
再次运行该页面。你猜怎么着? IG的网格是空的!
那么,如果您正在寻找的东西,请尝试一下 - 在调试模式下运行页面,查看结果并根据您看到的内容修改您的查询。希望它有所帮助。