8

我有一个列数可变的数据表和一个数据滚动条。如何启用服务器端排序?我更喜欢由用户单击列标题来触发它。

<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)
4

5 回答 5

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>
于 2008-09-25T20:46:33.543 回答
1

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

数据表将调用它的modify()方法来进行服务器端排序和过滤。

于 2010-05-14T14:48:03.067 回答
1

这里有一个相当优雅的解决方案:

http://livedemo.exadel.com/richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage

这个演示避免使用标签。

于 2010-07-15T14:52:37.460 回答
0

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

于 2008-10-22T14:36:32.483 回答
0

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

于 2008-11-14T09:32:57.750 回答