Pregunta

Tengo una tabla de datos con un número variable de columnas y un desplazador de datos. ¿Cómo puedo habilitar la clasificación del lado del servidor? Prefiero que lo dispare el usuario haciendo clic en el encabezado de la columna.

<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 la ordenación.

public void sort(int column)
¿Fue útil?

Solución

Terminé haciéndolo manualmente. Agrego 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>

Otros consejos

Aquí hay una solución bastante elegante para esta solución:

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

Esta demostración evita el uso de la etiqueta.

Su modelo de datos debe implementar " Modificable " interfaz.

El datatable llamará a su método modify () para hacer uso del servidor clasificación y filtrado.

Echa un vistazo a " sortBy " propiedad de " rich: columns " ;, tal vez eso es lo que está buscando. Richfaces Reference

¿No puedes usar Collection.sort () cuando recuperas la lista?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top