2008-09-25 7 views
8

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é par l'utilisateur en cliquant sur l'en-tête de la colonne. J'ai déjà une méthode sur le bean pour exécuter le tri.Tri des données DataTable côté serveur dans RichFaces

public void sort(int column) 

Répondre

6

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

Jetez un oeil à la « sortBy » propriété de « riches: colonnes », peut-être c'est ce que vous cherchez. Richfaces Reference

+2

Je ne peux pas obtenir cet attribut pour fonctionner de manière cohérente. Quoi qu'il en soit, il a dit le tri côté serveur. Est-ce pas riche: les colonnes avec tri par côté client tri? –

0

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

1

Votre datamodèle doit implémenter l'interface "Modifiable".

Le datatable appellera sa méthode modify() pour effectuer le tri et le filtrage côté serveur .

1

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.

+2

Cela montre comment faire un tri externe, mais le tri se passe toujours du côté client. Je crois que OP cherche à attraper l'événement click en cliquant sur les en-têtes et en triant ensuite la source de données sous-jacente sur le backend. –

Questions connexes