Ordinamento DataTable lato server in RichFaces
Domanda
Ho una tabella di dati con un numero variabile di colonne e uno scroller di dati. Come posso abilitare l'ordinamento lato server? Preferisco che venga attivato dall'utente facendo clic sull'intestazione della colonna.
<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>
Ho già un metodo sul bean per eseguire l'ordinamento.
public void sort(int column)
Soluzione
Ho finito per farlo manualmente. Aggiungo un tag di supporto al tag di testo dell'intestazione, in questo modo.
<h:outputText value="#{column}">
<a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
eventsQueue="instancesQueue"
reRender="instanceList,instanceListScroller"/>
</h:outputText>
Per ottenere le frecce ascendenti / discendenti, ho aggiunto una 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>
Altri suggerimenti
Esiste una soluzione abbastanza elegante per questa soluzione qui:
http://livedemo.exadel.com /richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage
Questa demo evita di usare il tag.
Il tuo modello di dati deve implementare " Modificabile " interfaccia.
Il datatable chiamerà il suo metodo edit ()
per fare il lato server
ordinamento e filtro.
Dai un'occhiata a " sortBy " proprietà di " rich: colonne " ;, forse è quello che stai cercando. Riferimenti Richfaces
Non puoi usare Collection.sort () quando recuperi l'Elenco?