2008-09-25 44 views
8

我有一个数据表,具有可变数量的列和数据滚动器。我如何启用服务器端排序?我更喜欢用户点击列标题来解雇它。服务器端数据表排序在RichFaces

<rich:datascroller for="instanceList" actionListener="#{pageDataModel.pageChange}"/> 
<rich:dataTable id="instanceList" rows="10" value="#{pageDataModel}" 
       var="fieldValues" rowKeyVar="rowKey"> 
    <rich:columns value="#{pageDataModel.columnNames}" var="column" index="idx"> 
    <f:facet name="header"> 
     <h:outputText value="#{column}"/> 
    </f:facet>   
    <h:outputText value="#{classFieldValues[idx]}" /> 
    </rich:columns> 
</rich:dataTable> 

我已经有一个bean的方法来执行排序。

public void sort(int column) 

回答

6

我最终手动做了。我在头文本标签中添加了一个支持标签,就像这样。

<h:outputText value="#{column}"> 
    <a4j:support event="onclick" action="#{pageDataModel.sort(idx)}" 
       eventsQueue="instancesQueue" 
       reRender="instanceList,instanceListScroller"/> 
</h:outputText> 

要得到升序/降序箭头,我添加了一个css类。

<h:outputText value="#{column}" styleClass="#{pageDataModel.getOrderClass(idx)}" > 
    <a4j:support event="onclick" action="#{pageDataModel.sort(idx)}" 
       eventsQueue="instancesQueue" 
       reRender="instanceList,instanceListScroller"/> 
</h:outputText> 
0

看看“rich:columns”的“sortBy”属性,也许这就是你要找的。 Richfaces Reference

+2

我无法获得此属性一致工作。无论如何他说服务器端排序。不丰富:具有sortBy客户端排序的列? – 2009-08-18 17:07:33

0

不能在检索列表时使用Collection.sort()吗?

1

您的数据模型需要实现“可修改”界面。

该数据表将其称为modify()方法做服务器端 排序和过滤。