RichFaces中的服务器端数据表排序
时间:2020-03-06 14:44:10 来源:igfitidea点击:
我有一个具有可变列数和一个数据滚动器的数据表。如何启用服务器端排序?我更喜欢由用户单击列标题来触发它。
<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)
解决方案
我最终手动完成。我将支持标签添加到标题文本标签中,如下所示。
<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>
看看" rich:columns"的" sortBy"属性,也许这就是我们想要的。
Richfaces参考
难道我们只是在检索列表时使用Collection.sort()?
数据模型需要实现"可修改"接口。
数据表将调用它的modify()
方法在服务器端进行操作
排序和过滤。
这里有一个相当优雅的解决方案:
http://livedemo.exadel.com/richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage
此演示避免使用标签。