Datagridview - Trovare il Valre Massimo di una colonna

martedì 30 settembre 2008 - 10.55

DomA Profilo | Expert

Ciao a tutti. Vorrei sapere se è possibile trovare i valori max, min e medio di una determinata colonna di una Datagridview? In caso affermativo qualcuno sa dirmi come fare? Nello specifico io utilizzo vb 2005 e la colonna in questione contiene dei prezzi.
Grazie per l'aiuto.


freeteo Profilo | Guru

ciao,
se la tua griglia ha agganciata una DataTable, puoi usare il metodo "Compute" della classe DataTable appunto, che ti da la possibilità di fare operazioni al volo, senza fare il ciclo per tutte le righe:

Dim miaDataTable as new DataTable() ... ... Dim somma As Integer = Convert.ToInt32(miaDataTable.Compute(" Sum(campo) ", string.Empty))
dove "campo" è il nome della colonna della DataTable che vuoi sommare.
help ufficiale: http://msdn.microsoft.com/it-it/library/system.data.datatable.compute.aspx


Se invece hai qualche altro tipo di collection come datasource della griglia, allora devi per forza fare un ciclo, e usare una variabile di appoggio da incrementare via via.
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

DomA Profilo | Expert

La griglia è alimentata da un Datasorce. A me, però, non serve la somma ma solo identificare la riga che ha il valore max (nel mio caso) il prezzo più alto. Come posso fare?
Ciao
Domenico

freeteo Profilo | Guru

>La griglia è alimentata da un Datasorce. A me, però, non serve
>la somma ma solo identificare la riga che ha il valore max (nel
>mio caso) il prezzo più alto. Come posso fare?
ok allora devi fare un ciclo, tipo questo:

int indiceRiga = 0; double massimo = 0; foreach (DataGridViewRow riga in dataGridView1.Rows) { double valore = (double)riga.Cells["colonnaPrezzo"].Value; if (valore > massimo) { indiceRiga = riga.Index; massimo = valore; } } MessageBox.Show("Il massimo è " + massimo + " alla riga " +indiceRiga);

ovviamente adattalo alla tua situazione, dando il nome giusto di colonna e il nome giusto della griglia, e poi valuta se usare double o decimal, a seconda dei valori che hai.

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

DomA Profilo | Expert

Funziona alla grande.
Grazie.

Domenico
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5