Problema ordine tramite colonne

venerdì 27 maggio 2011 - 10.24
Tag Elenco Tags  VB.NET  |  .NET 3.5

whiteflash Profilo | Junior Member

Ho questo problema non riesco a fare in modo che l'ordine delle righe contenute vengano in modo corretto cioè:
1
2
3
4
5
6
... ecc

invece mi viene fuori come sull'immagine sotto (lavoro in WPF)
qualcuno sa aiutarmi?



664x459 35Kb

---------------------------------------------
Newbie esperto VB.NET 2010 e WPF

AntCiar Profilo | Expert

Ciao.

Il problema è che ti viene ordinato considerando i valori come stringhe (come del resto è normale che fosse)

Io ti consiglerei di aggiungere alla sorgente dati una colonna di tipo Int32 valorizzata a 0 di default.
Dopo il caricamento dati, ti scorri una ad una le righe e valorizzi questa colonna con la sola parte numerica della stringa, convertita ad Int32
Poi ordini per questa colonna (magari questa colonna non la tieni nascosta nella griglia)

Ciao ciao
Cristian Barca

whiteflash Profilo | Junior Member

si però non va comunque bene perchè così perdo l'ordine alfabetico... questa lista io ora l'ho popolata così in fretta per mostrare
ma sarebbe un elenco di files quindi possono essere con numeri e non con numeri immezzo prima o dopo una parola,
a me serve che l'ordine venga fuori come succede in risorse del computer, ordinato sia alfabeticamente che numericamente
---------------------------------------------
Newbie esperto VB.NET 2010 e WPF

AntCiar Profilo | Expert

Allora la cosa si complica un po.

Dovresti creare una classe che accetta l'intera riga della sorgente dati della grid (magari come Array di Object)
Poi implementare in questa classe l'interfaccia IComparer() e gestirti il confronto.

Poi utilizzare una lista di oggetti di questa classe e dopo averla riempita invocare il Sort() utilizzando una istanza della classe creata come metodo interfaccia ICompare.

Dopo aver fatto l'ordinamento riscrivere la sorgente dati leggendo dalla lista.

In pratica ci vuole una bella botta di codice.
A me è venuto in mente questo. poi se c'è qualcun altro che conosce altri metodi.....



Cristian Barca

whiteflash Profilo | Junior Member

Ci ho messo un pò ma in rete ho trovato e adattato una soluzione, la posto così potrebbe essere di aiuto a qualcun altro.
Funziona solo se la sorgente dati è una Observable Collection

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


---Modifica
Dopo alcuni test ho visto che l'icomparer sopra con alcuni files genera un errore anche se non sono riuscito a capirne il motivo,
Qui sotto includo l'alternativa utilizzando l'api di windows (la stessa utilizzata da windows explorer)

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5