由于ViewObject有多种query mode:ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES(数据库),ViewObject.QUERY_MODE_SCAN_VIEW_ROWS(页面缓存)。
在设置了一种query mode的时候,绑定到RichTable的ViewObject的默认排序可能会失效,我们可以这样操作。
1,在manage bean中添加sort method:
public void sortMethod( SortEvent event ) { DCIteratorBinding iter = ADFUtils. findIterator( "xxxxVOIterator" ) ; String propery = event . getSortCriteria( ) . get ( 0) . getProperty ( ) ; String isAsending = event . getSortCriteria( ) . get ( 0) . isAscending ( ) = = true ? "asc" : "desc" ; ViewObject vo = iter. getViewObject( ) ; vo. setSortBy( propery + " " + isAsending) ; vo. setQueryMode( ViewObject. QUERY_MODE_SCAN_VIEW_ROWS) ; vo. executeQuery ( ) ; vo. setSortBy( null ) ; //去除排序基准 SortCriteria[ ] sc = new SortCriteria[ 0] ; iter. applySortCriteria( sc) ; }
2,在RichTable中添加sort listener <af:table ..... sortListener="#{backing_xxx.sortMethod}"
这样就可以了,不会出现默认的排序,只排序数据库的几个数据了。