2008-09-25 15 views
8

Tengo una tabla de datos con un número variable de columnas y un scroller de datos. ¿Cómo puedo habilitar la clasificación del lado del servidor? Prefiero que el usuario haga clic en el encabezado de la columna.DataTable del lado del servidor Ordenando en RichFaces

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

Ya tengo un método en el bean para ejecutar el género.

public void sort(int column) 

Respuesta

6

Terminé haciéndolo manualmente. Agregué una etiqueta de soporte a la etiqueta de texto del encabezado, como tal.

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

Para obtener las flechas ascendentes/descendentes, agregué una clase 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

Tener un vistazo a la propiedad "sortBy" de "ricos": columnas, tal vez eso es lo que estás buscando. Richfaces Reference

+2

No consigo que este atributo funcione de forma coherente. De todos modos, él dijo que la clasificación del lado del servidor. No es rico: columnas con sortBy clasificación del lado del cliente? –

0

¿No puede usar Collection.sort() cuando recupera la lista?

1

Su modelo de datos necesita implementar la interfaz "Modificable".

La tabla de datos llamará al método modify() para hacer la clasificación y el filtrado en el lado del servidor .

1

No es una solución bastante elegante a esta solución aquí:

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

Esta demo evita el uso de la etiqueta.

+2

Esto muestra cómo hacer una clasificación externa, pero la clasificación todavía está ocurriendo en el lado del cliente. Creo que a OP le interesa capturar el evento clic al hacer clic en los encabezados y luego tener el origen de datos subyacente ordenado en el back-end. –

Cuestiones relacionadas