Table 组件使用指南之十二:定制列字段过滤组件

来源:互联网 发布:burpsuite下载ubuntu 编辑:程序博客网 时间:2024/06/10 19:42
开发环境:JDeveloper 11.1.2.2.0 + Oracle XE Database 10gR2。

默认情况下,ADF Table使用InputText作为列字段过滤组件,你可以根据需要换成其它的组件。
基本的实现方法就是:右键点击要定制Column,选择为其增加Filter Facet:


1. 使用带tips的InputText
为LastName字段增加Filter Facet:InputText。
<f:facet name="filter">    <af:inputText id="it1" value="#{vs.filterCriteria.LastName}" shortDesc="Pls Input Filter for LastName"/></f:facet>

运行效果如下:


2. 使用selectOnceChoice
为DepartmentId字段增加Filter Facet:SelectOneChoice。
(1)Department下拉列表要用到Tree Binding,因此手工增加一个。

(2)Tree Binding的定义如下:

(3)为了一次取出所有的Department,设置DepartmentsView1Iterator的RangeSize=-1,表示一次全部读出。
注意,这只适用于记录比较少的情况,如果记录比较多,应该使用LOV。
(4)向DepartmentId字段的Filter Facet中放置SelectOneChoice

最终的代码如下:
  <f:facet name="filter">    <af:selectOneChoice value="#{vs.filterCriteria.DepartmentId}" id="soc1">        <af:forEach var="listrow" items="#{bindings.DepartmentsView1.rangeSet}">            <f:selectItem id="si1" itemValue="#{listrow.DepartmentId}"                          itemLabel="#{listrow.DepartmentName}"/>        </af:forEach>    </af:selectOneChoice></f:facet>

运行效果如下:

注意,这里有一个问题:第一次显示时,会有Blank Item,但是选择一个Department后,就没有Blank Item了。
这样用户就无法清空查询条件了,感觉是一个BUG。待查。

Project 下载:ADF_Table_Filter(2).7z

参考文献:
1. http://www.oracle.com/technetwork/developer-tools/adf/learnmore/16-custom-table-filter-169145.pdf

2. http://www.oracle.com/technetwork/developer-tools/adf/learnmore/nov2010-otn-harvest-190744.pdf

http://maping930883.blogspot.com/2012/06/adf142table.html

0 0
原创粉丝点击