gwt sorting celltable

Gwt celltable invoke sort en una columna



sorting (3)

Tengo una mesa de celular GWT. Al hacer clic en los encabezados se ordenan las columnas correctamente. Pero en la carga de la página, las columnas no están ordenadas por defecto. Quiero hacer que la columna más a la derecha se clasifique cuando se carga la página.


Le sugiero que recupere los datos que va a mostrar ya ordenados. Si ese es el caso, solo tiene que configurar el ícono de ordenación correcta (ascendente o descendente):

/** * Displays the appropriate sorted icon in the header of the column for the given index. * * @param columnIndex * of the column to mark as sorted * @param ascending * <code>true</code> for ascending icon, <code>false</code> for descending icon */ public void setSortedColumn(int columnIndex, boolean ascending) { Column<T, ?> column = table.getColumn(columnIndex); if (column != null && column.isSortable()) { ColumnSortInfo info = table.getColumnSortList().push(column); if (info.isAscending() != ascending) { table.getColumnSortList().push(column); } } }

Si no se pueden ordenar los datos antes de recuperarlos, puede ordenar la lista de la misma manera que lo hace cuando un usuario hace clic en el encabezado ( onColumnSort(ColumnSortEvent event) con un Comparator ) antes de mostrarlo.


Para aclarar un par de las respuestas existentes ... la lista de clasificación de una cellTable de cellTable (a la que accede mediante la función getColumnSortList() ) solo determina cómo está el estado del encabezado de la tabla, pero en realidad no ordena ningún dato.

Como sugirió @ z00bs, puede ser conveniente ordenar los datos externamente, si es posible. Si sabe que los datos se ordenarán previamente, debe usar las getColumnSortList().clear() getColumnSortList().push() y getColumnSortList().push() para comunicar a sus usuarios cómo se ordenan los datos.

Sin embargo, si desea que CellTable ordene realmente los datos, tendrá que desencadenar un evento para obligar a CellTable a ordenar realmente los datos del lado del cliente. Para hacer esto, puedes usar el ColumnSortEvent.fire() estatal ColumnSortEvent.fire() , como tal:

ColumnSortEvent.fire(myTable, myTable.getColumnSortList());

Esto activará un evento que controla la clasificación de los datos en función del estado actual del encabezado. Por lo tanto, puede establecer primero el estado de clasificación inicial deseado del encabezado y luego ejecutar esta línea para que el orden de los datos refleje el estado de clasificación actual representado en el encabezado.


Puede usar getColumnSortList () y empujar la columna que desea ordenar, como tal:

dataGrid.getColumnSortList().push(columnToSortBy);

La tabla se ordenará por la columna dada en orden ascendente.

Si se llama a este método dos veces, se activará un chequeo para verificar si la columna dada ya se incluyó en la lista, y si es así, se ordenará en orden descendente, de modo que para ordenar la tabla por la columna en orden descendente use:

dataGrid.getColumnSortList().push(columnToSortBy); dataGrid.getColumnSortList().push(columnToSortBy);

Detrás de la escena, la columna se empuja a una lista interna en la tabla llamada ColumnSortList a la posición 0. La misma lista se actualiza en cada clic de encabezado de columna.

Asegúrese de llamar a este método después de inicializar la columna.