[VB.NET] DataGridView - ordinamento righe

sabato 31 ottobre 2009 - 23.57

alexmed Profilo | Guru

Ciao a tutti
Se in un DGV carico dei dati di tipo integer da una tabella di un db su una colonna e clicco sul HeaderText per fare l'ordinamento, nessun problema.

Ma se creo dinamicamente le righe:

Me.DataGridView1.Rows.Clear() For i As Integer = 1 To 50 Dim row0 As String() = {i, Now} Me.DataGridView1.Rows.Add(row0) Next

quando clicco per fare l'ordinamento mi mette

1
10
11
12
...
2
20
21
...

Qualcuno sa come risolverla?

alexmed

freeteo Profilo | Guru

Ciao,
con il tuo codice aggiungi si le righe, ma gli dici che i valori sono tutti stringa, infatti gli passi un array di stringhe, senza definire il tipo di colonna.
Ti conviene definire il tipo delle colonne, e poi riempire le righe con un codice di questo tipo:
Dim t As DataTable = New DataTable t.Columns.Add("id", GetType(System.Int32)) t.Columns.Add("testo", GetType(System.String)) Dim i As Integer = 0 Do While (i < 100) t.Rows.Add(i, "desc " & i) '-- esempio i = (i + 1) Loop dataGridView1.DataSource = t
Così facendo la griglia sa che si tratta di un int il campo "id" e quindi lo ordina correttamente.
Ciao.

Matteo Raumer
[MCAD, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

alexmed Profilo | Guru

Ciao
Ero convinto che mettendogli "i As Integer" gli passassi un integer. In effetto se poi gli dico "row As String()" evidentemente fà una conversione.
Sulla base di questa considerazione ho provato facendo una piccola modifica: "row As Object", quindi niente più conversioni, e funziona.

Sicuramente il codice che mi hai passato è ancora più completo e lo terrò da conto.

Grazie.

alexmed

freeteo Profilo | Guru

>Ero convinto che mettendogli "i As Integer" gli passassi un integer.
>In effetto se poi gli dico "row As String()" evidentemente fà
>una conversione.
>Sulla base di questa considerazione ho provato facendo una piccola
>modifica: "row As Object", quindi niente più conversioni, e funziona.
si perchè lo deduce dal valore che gli passi, quindi appunto "i" che è un "int"

>Sicuramente il codice che mi hai passato è ancora più completo
>e lo terrò da conto.
>Grazie.
ok, di niente grazie a te.
Ciao.

Matteo Raumer
[MCAD, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5