Ordenar Registros del ListView

Iniciado por ssccaann43 ©, 12 Septiembre 2008, 02:51 AM

0 Miembros y 1 Visitante están viendo este tema.

ssccaann43 ©

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..


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
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

seba123neo

Hola,hace un Select Case del Index del ColumnHeader..algo asi:

Código (vb) [Seleccionar]
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....

Case 3....

End Select
End Sub


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

saludos.

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

ssccaann43 ©

#2

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.
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"