Question

J'ai une table de données avec un nombre variable de colonnes et un scroller de données. Comment puis-je activer le tri côté serveur? Je préfère qu'il soit déclenché lorsque l'utilisateur clique sur l'en-tête de la colonne.

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

J'ai déjà une méthode sur le haricot pour exécuter le tri.

public void sort(int column)
Était-ce utile?

La solution

J'ai fini par le faire manuellement. J'ajoute une balise de support à la balise de texte en-tête, comme ça.

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

Pour obtenir les flèches ascendantes / descendantes, j'ai ajouté une classe css.

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

Autres conseils

Il existe une solution assez élégante à cette solution ici:

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

Cette démo évite d’utiliser la balise.

Votre modèle de données doit implémenter "Modifiable". interface.

Le datatable appellera sa méthode modify () pour effectuer des opérations serveur le tri et le filtrage.

Consultez le " triBy " propriété de "riche: colonnes", c’est peut-être ce que vous recherchez. Référence de Richfaces

Ne pouvez-vous pas simplement utiliser Collection.sort () lorsque vous récupérez la liste?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top