在ADF中,使用af: table的时候,可以非常简单地设置Table是否使用QBE filter fields;如下图,只要选中Filtering就可以。

jspx中自动产生如下代码:
运行应用后,所有记录显示如下:


运行后的效果如下图,过滤部门编号:

点击[Set Dname,Loc Search fields & Reexecute Query],重置filter fields,并执行查询:

被ADF封装后的框架,FilterableQueryDescriptor对应table.getFilterModel(),也就是jspx页面中af: table绑定的filterMoel属性;为了使用Java代码控制filter的逻辑,需要使用FilterableQueryDescriptor的getFilterCriteria()方法;getTableFilterCriteria().clear()可以清空所有的绑定参数,getTableFilterCriteria().put("Dname","%N%")给Dname设置绑定值。
部分Java代码片段:
使用QBE filter field的方式进行数据过滤十分简单方便,页面不需要设置查询区域,布局也容易控制;不过,国内的客户似乎更习惯在查询区域输入条件进行数据过滤,让客户接受我们的设计方案似乎更加有挑战。
卢玉双 2012/01/11 @上海