Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => 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..


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

Título: Re: Ordenar Registros del ListView
Publicado por: ssccaann43 © en 12 Septiembre 2008, 03:49 AM

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.