Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - ordinamento listview
Forum - Visual Basic 6 - ordinamento listview

Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 13:22
Venerdì, 22/01/2010
salve...ho un problema molto curioso:

usando la proprietà SortKey del controllo ListView riesco ad ottenere l'ordinamento per stringa..ma se volessi ottenerlo secondo dati numerici?

mi spiego meglio..

data una lista di numeri e messi nella prima colonna della listView (stiamo parlando di una disposizione della listview come report con colonne), se applico un ordinamento su tale lista, con la proprietà SortKey, non vengono ordinati in base al numero ma vede il numero come se fosse stringa...

es.

mettiamo che ho questa lista:

12
21
16
1
5
99
33


vorrei ottenere ovviamente un ordinamento cosi:

1
5
12
16
21
33
99

e invece visto che il listview (o non so) li vede come stringhe, me le ordina cosi:

1
12
16
21
33
5
99

mi date qualche consiglio per risolvere il mio prob?

Grazie

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 14:50
Venerdì, 22/01/2010
Per la list i numeri vengono visti comunque come stringhe per cui:

1
10
101

vengono prima di

2
20
200

Per ovviare devi formattare i numeri che immetti nella lista:

0001
0002
0010
0020
0100
0200

Ultima modifica effettuata da Alfonso il 22/01/2010 alle 14:51
PM Quote
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 15:05
Venerdì, 22/01/2010
Testo quotato

Postato originariamente da Alfonso:

Per la list i numeri vengono visti comunque come stringhe per cui:

1
10
101

vengono prima di

2
20
200

Per ovviare devi formattare i numeri che immetti nella lista:

0001
0002
0010
0020
0100
0200




avevo pensato a questo...ma speravo ci fosse un metodo migliore...questo è bruttino...ma pazienza

grazie cmq

Ultima modifica effettuata da foralobo il 22/01/2010 alle 15:05
PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 15:10
Lunedì, 25/01/2010
Puoi mettere i tuoi numeri in un array di dimensione n (numero(n)), lo ordini e lo inserisci nella lista settata senza ordinamento.
Codice sorgente - presumibilmente VB.NET

  1. Dim x, i, tmpN As Integer
  2.  
  3. For x = n - 1 To 0 Step -1
  4.   For i = 0 To x
  5.     If numero(i) > numero(i + 1) Then
  6.      tmpN = numero(i)
  7.      numero(i) = numero(i + 1)
  8.      numero(i + 1) = tmpN
  9.     End If
  10.   Next i
  11. Next x
  12. For t = 0 To n
  13.   List1.AddItem numero(t)
  14. Next


PM Quote