代码之家  ›  专栏  ›  技术社区  ›  sblundy

RichFaces中的服务器端数据表排序

  •  8
  • sblundy  · 技术社区  · 16 年前

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

    <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)
    
    5 回复  |  直到 12 年前
        1
  •  6
  •   sblundy    16 年前

    我最后是手工做的。我在标题文本标记中添加了一个支持标记,就像这样。

    <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>
    
        2
  •  1
  •   Marco    14 年前

    这里有一个非常优雅的解决方案:

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

    此演示避免使用标记。

        3
  •  1
  •   EdChum Yuriy    12 年前

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

    数据表将调用它 modify() 服务器端的方法 排序和筛选。

        4
  •  0
  •   Patrick    16 年前

    查看“rich:columns”的“sortby”属性,也许这就是您要查找的内容。 Richfaces Reference

        5
  •  0
  •   Shervin Asgari    16 年前

    检索列表时,不能只使用collection.sort()?