使用Java代码控制ADF table列进行QBE方式的过滤
使用Java代码控制ADF table列进行QBE方式的过滤
在ADF中,使用af: table的时候,可以非常简单地设置Table是否使用QBE filter fields;如下图,只要选中Filtering就可以。
jspx中自动产生如下代码:
[html]- filterModel="#{bindings.DeptView1Query.queryDescriptor}"
运行应用后,所有记录显示如下:
类似Oracle form中的操作,在列中输入值,点击回车过滤数据:
运行后的效果如下图,过滤部门编号:
点击[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代码片段:
[java]- public String onProgrammaticallySetFilterCriteriaAndReexecuteQuery() {
- getTableFilterCriteria().clear();
- getTableFilterCriteria().put("Dname","%N%");
- getTableFilterCriteria().put("Loc","%O%");
- queueTableQueryEvent();
- return null;
- }
- EL.invokeMethod("#{bindings.DeptView1Query.processQuery}",QueryEvent.class,queryEvent);
使用QBE filter field的方式进行数据过滤十分简单方便,页面不需要设置查询区域,布局也容易控制;不过,国内的客户似乎更习惯在查询区域输入条件进行数据过滤,让客户接受我们的设计方案似乎更加有挑战。
卢玉双 2012/01/11 @上海
评论暂时关闭