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)
È stato utile?

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?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top