Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/11/2008, 04:18
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 4 meses
Puntos: 37
Respuesta: Ordenar Listview

Cita:
Iniciado por rulsanchez Ver Mensaje
Hola amigos!! pues eso, que tengo un Listview con 3 columnas y quiero que ordene por la primera pero me lo ordena como string, y yo quiero que lo ordene como numérico, y no soy capaz de arreglarlo.
Muchisimas gracias por su interés y por leerme.
Un saludo foreros ;)
Hola! mira, un truco es convertir el número a string, ordenarlo y volverlo a convertir a número.

Código:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
Dim i As Integer
With ListView1
    .SortOrder = IIf(.SortOrder = lvwAscending, lvwDescending, lvwAscending)
    If ColumnHeader.Index = 1 Then ' primera columna
        ' convertir el número a una cadena de 20 caracteres
        For i = 1 To .ListItems.Count
            .ListItems.Item(i) = String(20 - Len(.ListItems.Item(i)), "0") & .ListItems.Item(i)
        Next i
        ' ordenarlo
        .Sorted = True
        ' restaurar formato número
        For i = 1 To .ListItems.Count
            .ListItems.Item(i) = Val(.ListItems.Item(i))
        Next i
    End If
    ' seleccionar la 1ª fila
    .ListItems(1).Selected = True
    .ListItems(1).EnsureVisible
End With
End Sub
Saludos