Visual Basic.NET - Ordenr datagridview por dos columnas, una ascendente y otra descendente

 
Vista:
sin imagen de perfil
Val: 31
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ordenr datagridview por dos columnas, una ascendente y otra descendente

Publicado por juan luis (43 intervenciones) el 19/11/2021 16:06:35
Estimados:
Cargo un datagridview como resultado de un proceso y necesito, para facilitar el análisis de los datos en pantalla, que el usuario pueda ordenar los datos por diferentes conceptos. Pero no he encontrado como ordenar dos columnas simultaneas. Revisé en respuestas previas pero no abordan el problema que planteo. En este caso necesito ordenar por la columna 1 ascendente y columna 2 descendente.
Agradeceré cualquier ayuda al respecto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ordenr datagridview por dos columnas, una ascendente y otra descendente

Publicado por Phil Rob (1554 intervenciones) el 19/11/2021 16:34:08
Hola,

Una pregunta ante de reflexionar sobre este difícil problema :

Es que el DGV es llenar con el resultado de una consulta SQL ? Porque en este caso, es fácil de ordenar los registros un campo ascendente, un campo descendente, ...

De otra manera, el "Click" del "header" de columna ordenar las líneas, es posible "1 click" columna 1 para ascendente y "2 click" columna 2 para descendiente. Pero este manera cambia todas líneas.

Si no tiene un consulta SQL, pienso que deberíamos hacer un algoritmo "manual" ...

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 31
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ordenr datagridview por dos columnas, una ascendente y otra descendente

Publicado por juan luis (43 intervenciones) el 19/11/2021 22:00:52
el grid se carga como resultado de un proceso. Y a pesar que tiene un orden, para efecto de análisis de los resultados es necesario reordenarlos. Estoy pensando en ese ordenamiento via proceso. Sospecho que puede ser mas lento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ordenr datagridview por dos columnas, una ascendente y otra descendente

Publicado por Phil Rob (1554 intervenciones) el 19/11/2021 22:16:10
Miraré mañana...
Es qué el df contiene muchas líneas ?

....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ordenr datagridview por dos columnas, una ascendente y otra descendente

Publicado por Phil Rob (1554 intervenciones) el 21/11/2021 18:34:42
Hola,

No he tengo tiempo más temprano para reflexionar a tu problema de clasificación múltiple pero ahora, este es hecho.

En primero, he pensado escribir un algoritmo simple y trabajar segun las llaves.
Es necesario de clasificar todas líneas con comparación sobre la primera lleva.
Después, es necesario de clasificar todas líneas con comparación sobre la segunda lleva concatenada con la primera.
Y continuamos de esta manera según la cuantidad de llaves :
Clasificar con [Lleva1]
Clasificar con [Lleva1 & Lleva2]
Clasificar con [Lleva1 & Lleva2 & Lleva3]
No es demasiado difícil de ajustar este sistema en un algoritmo de clasificación simple (por ejemplo, un BubbleSort) pero creo que este funcionara lento.
Y ajustar este sistema en un algoritmo de clasificación rápido (por ejemplo, un QuickSort) parece me muy difícil. Soy demasiado perezoso ...

Así, he elegido otra solución.
Copio los datos en un fichero CSV (texto con separador). Después, podemos leer este fichero con un OleDb y ejecutar consultas SQL. En más, la lectura con OleDB da un DataTable fácil para llenar el DGV.
Sobre el algoritmo de clasificación, este es mucho más simple, solo confía en SQL :
SELECT * FROM ElNombreDelFicheroCSV ORDER BY Lleva1 ASC, Lleva2 DESC, Lleva3 ASC ….

Mira el video: https://www.dropbox.com/s/degwavbugxmn5pp/DGV_Sort.mp4?dl=0

Adjunto mi proyecto de prueba para ti testar.

Claro, es necesario de implementar el sistema en tu proyecto. Pienso que cuando el DGV es copiado en el fichero CSV y que puedes decir las llaves seleccionadas, no debería ser muy difícil.

Buenas tardes....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar