Visual Basic - alguien sabe de listview

Life is soft - evento anual de software empresarial
 
Vista:

alguien sabe de listview

Publicado por Javier (6 intervenciones) el 23/09/2007 00:24:39
tengo u lisview como list y quiero ordenara las columas si son de texto no hay problrema pero este salta cuando la columna es de tipo numero o de fecha es que no lo ordena en condiciones

alguien me puede ayudar? es que estoy principando en esto del vb.

gracias
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

RE:alguien sabe de listview

Publicado por barca1010 (132 intervenciones) el 26/09/2007 11:45:17
Yo consegui este codigo en este foro y funciona muy bien, lo unico es que yo lo utilizo lel view del listview como report y no como list, no se si eso dará algun problema aunque no deberia, el codigo es el siguiente(es un poco largo):

Public Function OrdenarLSV(ByVal objLSV As Object, ByVal Columna As Long)

With objLSV
Dim I As Long
Dim Formato As String
Dim strData() As String

Select Case UCase(.ColumnHeaders.Item(Columna + 1).Tag)
Case "DATE"
Formato = "YYYYMMDDHhNnSs"
With .ListItems
If (Columna > 0) Then
For I = 1 To .Count
With .Item(I).ListSubItems(Columna)
.Tag = .Text & Chr$(0) & .Tag
If IsDate(.Text) Then
.Text = Format(CDate(.Text), Formato)
Else
.Text = ""
End If
End With
Next I
Else
For I = 1 To .Count
With .Item(I)
.Tag = .Text & Chr$(0) & .Tag
If IsDate(.Text) Then
.Text = Format(CDate(.Text), Formato)
Else
.Text = ""
End If
End With
Next I
End If
End With

.SortOrder = (.SortOrder + 1) Mod 2
.SortKey = Columna
.Sorted = True

With .ListItems
If (Columna > 0) Then
For I = 1 To .Count
With .Item(I).ListSubItems(Columna)
strData = Split(.Tag, Chr$(0))
.Text = strData(0)
.Tag = strData(1)
End With
Next I
Else
For I = 1 To .Count
With .Item(I)
strData = Split(.Tag, Chr$(0))
.Text = strData(0)
.Tag = strData(1)
End With
Next I
End If
End With

Case "NUMBER"
Formato = String(30, "0") & "." & String(30, "0")

With .ListItems
If (Columna > 0) Then
For I = 1 To .Count
With .Item(I).ListSubItems(Columna)
.Tag = .Text & Chr$(0) & .Tag
If IsNumeric(.Text) Then
If CDbl(.Text) >= 0 Then
.Text = Format(CDbl(.Text), Formato)
Else
.Text = "&" & InvNumber(Format(0 - CDbl(.Text), Formato))
End If
Else
.Text = ""
End If
End With
Next I
Else
For I = 1 To .Count
With .Item(I)
.Tag = .Text & Chr$(0) & .Tag
If IsNumeric(.Text) Then
If CDbl(.Text) >= 0 Then
.Text = Format(CDbl(.Text), Formato)
Else
.Text = "&" & InvNumber(Format(0 - CDbl(.Text), Formato))
End If
Else
.Text = ""
End If
End With
Next I
End If
End With

.SortOrder = (.SortOrder + 1) Mod 2
.SortKey = Columna
.Sorted = True

With .ListItems
If (Columna > 0) Then
For I = 1 To .Count
With .Item(I).ListSubItems(Columna)
strData = Split(.Tag, Chr$(0))
.Text = strData(0)
.Tag = strData(1)
End With
Next I
Else
For I = 1 To .Count
With .Item(I)
strData = Split(.Tag, Chr$(0))
.Text = strData(0)
.Tag = strData(1)
End With
Next I
End If
End With

Case Else
.SortOrder = (.SortOrder + 1) Mod 2
.SortKey = Columna
.Sorted = True
End Select
End With

objLSV.Refresh
End Function
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