Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ssccaann43 © en 12 Septiembre 2008, 02:51 am



Título: Ordenar Registros del ListView
Publicado por: ssccaann43 © en 12 Septiembre 2008, 02:51 am
Buenas, bien tengo un inconveniente a lo que no he encontrado solución. Estoy intentando ordernar los registros de un ListView dandole click en los columnheader, la primera columna lo hace bien, pero no encuentro la manera para hacerlo ordenar por las demas columnas. A ver si alguien sabe algo. estuve usando una clase de Leandro Ascierto que modifico cuando estabamos con el tema de los Skin y las graficas en el ListView, pero no obtuve nada. Bueno espero respuestas. Saludos

Este code utilizo para ordenar..

Código:
Private Sub ListView1_ColumnClick( _
    ByVal ColumnHeader As MSComctlLib.ColumnHeader)
   
  'lvwAscending ' orden ascendente
  'lvwDescending ' orden descendente
 
  With ListView1
       If .SortOrder = lvwAscending Then
          .SortOrder = lvwDescending
       Else
          .SortOrder = lvwAscending
       End If
       
       .Sorted = True
       ' columna por la cual se ordena
       '( en este caso hay una sola )
       .SortKey = 0
  End With
End Sub


Título: Re: Ordenar Registros del ListView
Publicado por: seba123neo en 12 Septiembre 2008, 03:28 am
Hola,hace un Select Case del Index del ColumnHeader..algo asi:

Código
  1. Private Sub ListView1_ColumnClick( _
  2.    ByVal ColumnHeader As MSComctlLib.ColumnHeader)
  3.  
  4. Select Case ColumnHeader.Index
  5.  
  6. Case 1
  7.  
  8. With listview
  9. If .SortOrder = lvwAscending Then
  10. .SortOrder = lvwDescending
  11. Else
  12. .SortOrder = lvwAscending
  13. End If
  14. .SortKey = ColumnHeader.Index - 1
  15. .Sorted = True
  16. End With
  17.  
  18. Case 2....
  19.  
  20. Case 3....
  21.  
  22. End Select
  23. End Sub

o directamente hace un for y te ahorras los Case....o pones Case 1 , 2, 3...

saludos.



Título: Re: Ordenar Registros del ListView
Publicado por: ssccaann43 © en 12 Septiembre 2008, 03:49 am
Código:
Private Sub ListView1_ColumnClick( _
    ByVal ColumnHeader As MSComctlLib.ColumnHeader)
 
Select Case ColumnHeader.Index
 
Case 1
 
With listview
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
.SortKey = ColumnHeader.Index - 1
.Sorted = True
End With
 
Case 2

With listview
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
.SortKey = ColumnHeader.Index - 1
.Sorted = True

Case 3

 With listview
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
.SortKey = ColumnHeader.Index - 1
.Sorted = True

End Select

End Sub

Y gracias por responder seba123neo. Es exactamente lo que busco.