Sorting
La clasificación permite a los usuarios organizar datos en columnas por orden, lo que facilita la lectura y el análisis de la información. Esto es útil cuando los usuarios necesitan encontrar rápidamente los valores más altos o más bajos en una columna particular.
Mostrar Código
- Java
Por defecto, una columna no se puede clasificar a menos que se habilite explícitamente. Para permitir la clasificación en una columna específica, utiliza el método setSortable(true)
:
table.getColumn("Age").setSortable(true);
Clasificación múltiple
25.00
Antes de webforj 25.00
, las tablas admitían la clasificación de múltiples columnas por defecto. A partir de la versión 25.00
, este comportamiento cambió; los desarrolladores ahora deben habilitar explícitamente la clasificación de múltiples columnas.
Si se necesita clasificación múltiple, se debe aplicar setMultiSorting(true)
a la tabla. Esto permite a los usuarios clasificar varias columnas en secuencia:
table.setMultiSorting(true);
Con la clasificación múltiple habilitada, hacer clic en múltiples encabezados de columna los clasificarán secuencialmente. La prioridad de clasificación se indica visualmente en la interfaz de usuario de la tabla.
Mostrar Código
- Java
También puedes definir la prioridad de clasificación programáticamente para la clasificación del lado del servidor. Usa setSortOrder()
en las columnas que deseas clasificar, en orden de prioridad:
// Orden de clasificación del lado del servidor
nameColumn.setSortOrder(1);
ageColumn.setSortOrder(2);
A menos que se use setSortOrder()
, la tabla se clasifica por defecto en el orden en que se declaran las columnas.
Mostrar Código
- Java
Dirección de clasificación
Hay tres configuraciones disponibles para la dirección en la que se puede clasificar una columna:
SortDirection.ASC
: Clasifica la columna en orden ascendente.SortDirection.DESC
: Clasifica la columna en orden descendente.SortDirection.NONE
: No se aplica clasificación a la columna.
Cuando una columna tiene la clasificación habilitada, verás un conjunto de indicadores de flechas verticales aparecer en la parte superior de la columna clasificada. Estas flechas permiten al usuario alternar entre las diferentes direcciones de clasificación.
Cuando se selecciona el orden ascendente, se mostrará un ^
, mientras que el orden descendente mostrará un v
.
Clasificación del lado del cliente vs. del lado del servidor
La clasificación de datos se puede categorizar en dos enfoques principales: Clasificación del Cliente y Clasificación del Servidor.
Clasificación del cliente
La clasificación del cliente implica organizar y mostrar datos directamente dentro de la interfaz de usuario de la aplicación cliente. Es la clasificación con la que los usuarios interactúan cuando hacen clic en los encabezados de las columnas, influyendo en la representación visual de los datos en la pantalla.
El desarrollador no tiene control directo sobre la clasificación del lado del cliente, sino que esta se determina por el tipo de columna proporcionado en Java. Los siguientes tipos son actualmente compatibles:
- TEXTO
- NÚMERO
- BOOLEANO
- FECHA
- FECHA HORA
- HORA
La clasificación del cliente no funciona cuando solo una parte de los datos está disponible en el cliente.
Clasificación del servidor
En contraste con la clasificación del lado del cliente, la clasificación del servidor implica organizar y clasificar datos en el servidor antes de transmitirlos al cliente. Este enfoque es particularmente beneficioso cuando se trabaja con conjuntos de datos grandes que podrían ser imprácticos de transferir completamente al cliente.
Los desarrolladores tienen más control sobre la lógica de la clasificación del servidor. Esto permite la implementación de algoritmos complejos de clasificación y optimizaciones, lo que lo hace adecuado para escenarios con datos extensos. Esto asegura que el cliente reciba datos preclasificados, minimizando la necesidad de un procesamiento extenso del lado del cliente.
La clasificación del servidor es una estrategia orientada al rendimiento para manejar conjuntos de datos que superan las capacidades de procesamiento eficiente del lado del cliente, y es el método predeterminado utilizado por la Table
.
Comparadores
El componente Column
permite a los desarrolladores usar Comparators
de Java para clasificación dinámica y personalizada. Un Comparator
es un mecanismo utilizado para ordenar dos objetos de la misma clase, incluso si esa clase es definida por el usuario. Esta funcionalidad proporciona a los desarrolladores la flexibilidad para personalizar cómo se clasifican los datos, ofreciendo un mayor control sobre el comportamiento de clasificación predeterminado basado en el orden natural.
Para aprovechar la clasificación mediante Comparator
en una Column
, puedes utilizar el método setComparator()
. Este método te permite definir una función de Comparator
personalizada que dicta la lógica de clasificación.
Mostrar Código
- Java
En el ejemplo anterior, se especifica una función de comparador personalizada que toma dos elementos (a y b) y define el orden de clasificación según los valores enteros analizados del atributo Number
.
Usar Comparators para la clasificación de columnas es particularmente útil al manejar valores no numéricos. También son útiles para implementar algoritmos de clasificación complejos.
Por defecto, la Table
utiliza clasificación del lado del servidor, y clasifica valores no primitivos utilizando el método toString()
de Object, convirtiéndolos a sus valores de cadena y luego clasificándolos.