2008-09-25 48 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()方法做服務器端 排序和過濾。