1. Problema
Ordenar un control ListView por cualquiera de las columnas disponibles.
2. Solución
En su defecto el método ListView.Sort efectúa un ordenamiento a partir de la primera columna; la solucion consiste en crear una implementación de IComparer (System.Collections) para ordenar con base en un criterio ListViewItem concreto.
Para lo anterior es necesario establecer la propiedad ListView.ListViewItemSorter con la implementación de IComparer. Esto debe efectuarse antes de invocar al método ListView.Sort (Jones, Freeman, 2010).
3. Código C#
La implementación del método Compare(object, object) (líneas 69-115) determina la forma de ordenar las columnas:
- Líneas 71-72: Obtiene los elementos a comparar; éstos son convertidos a elementos ListViewItem.
- Líneas 74-90: Lógica de comparación cuando los elementos a comparar contiene elementos null.
- Líneas 92-107: Comprueba primero que los valores a comparar son numéricos. De ser así, se procede con la lógica de comparación: uso del método Decimal.Compare().
- Líneas 108-114: Cuando el contenido a comparar es alfanumérico.
4. Literatura & Enlaces
Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.