DataGridView sommare dati

venerdì 11 aprile 2008 - 20.03

jtpsala Profilo | Senior Member

Un saluto a tutti gli utenti di questo spettacolare Forum.

Vorrei chiedere se è possibile dopo aver eseguito un filtro su una DataGridView, eseguire las somma di un'intera colonna.

Ringrazio in anticipo.

TOPOAMORE Profilo | Expert

Ciao

Premettendo che forse hai usato un DataView

Dim Somma as long
For each Riga as Datarow in DataView
somma+=riga("nomeColonnaDaSommare")
next

Vedi se va

caioo

freeteo Profilo | Guru

ciao,
non c'e' un metodo sulla GridView, devi lavorare con il datasource, e girare con quello.
Pero' se hai un DataTable, c'e' un metodo molto comodo "Compute" con cui puoi fare delle operazioni tra le colonne e le righe, ad esempio:
DataTable table = new DataTable(); .... table.Compute("Sum(campo)", string.Empty);
dove il secondo parametro è il filtro, se vuoi farlo su tutto lascia string.Empty altrimenti puoi mettere un filtro sui dati su cui fare l'operazione...



ciao.

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

jtpsala Profilo | Senior Member

Ho provato ad eseguire questo codice ma in esecuzione dice che è impossibile eseguire il cast....

Dim Somma As Long For Each Riga As DataRow In Me.ScaricoDataGridView.Rows Somma += Riga("Costo") TextBox1.Text = Somma Next

TOPOAMORE Profilo | Expert

IL CAMPO COSTO CHE TIPO DI DATO E'? DECIMALE , CON VIRGOLA, QUALE?

jtpsala Profilo | Senior Member

Nel campo è presente la virgola. Es: € 12,20.

TOPOAMORE Profilo | Expert

PROVA CON DOUBLE INVECE CHE LONG

jtpsala Profilo | Senior Member

Nulla. L'errore rimane sempre quello.

TOPOAMORE Profilo | Expert

allora
comincia col mettere la textbox fuori dal ciclo for, alla fine.

dopodiche metti uno stop prima del for.

la tua applicazione in quel momento ti si blocchera e con f11 anfrai passo passo

Dimmi qual'e' l'istruzione che ti da errore

jtpsala Profilo | Senior Member

Qesto è l'errore:

Impossibile eseguire il cast di oggetti di tipo 'System.Windows.Forms.DataGridViewRow' sul tipo 'System.Data.DataRow'.

TOPOAMORE Profilo | Expert

ma scaricodatatgridview è il datagrid?

jtpsala Profilo | Senior Member

Si. Infatti vorrei sommare tutti gli importi contenuti nel DGV colonna "Importo".

TOPOAMORE Profilo | Expert

scrivi come e che con cosa fai il filtro

jtpsala Profilo | Senior Member

Eccolo:

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

TOPOAMORE Profilo | Expert

QUAL'E' LA TABELLA O COME SI CHAIMA LA TABELLA COLLEGATA AL DATAGRID?

jtpsala Profilo | Senior Member

La tabella si chiama "Scarico" e la colonna che voglio sommare il contenuto si chiama "Importo".

TOPOAMORE Profilo | Expert

Dim Somma as long
For each Riga as Datarow in SCARICO.ROWS
somma+=riga("nomeColonnaDaSommare")
next

jtpsala Profilo | Senior Member

L'unico codice che visualizza un risultato nella textbox1 è questo:

Dim Somma As Long For Each Riga As DataRow In MagazzinoGommeDataSet.Scarico.Rows Somma += Riga("Costo") Next TextBox1.Text = Somma

C'è un solo problema però. Il risulato è un numero casuale "1624" che non corrisponde al risulato del contenuto della DGV.

E poi quando eseguo una nuova ricerca quel risultato rimane fisso nella textbox.

Cosa può essere. Ormai da oggi pomeriggio li ho provate tutte.

TOPOAMORE Profilo | Expert

RIMANE FISSO PERCHE NON TIENE CONTO DEL FILTRO. pER VEDERE UN RISULATATO REALE MAGARI CAMBIA IL TIPO DI SOMMA IN DOUBLE

oRA VADO VI


CIAOO

jtpsala Profilo | Senior Member

Per questa sera è meglio smettere. Magari la notte mette consiglio.
Grazie per il momento.

jtpsala Profilo | Senior Member

Ho risolto in questo modo:
Dim Total As Single For Each Row As DataGridViewRow In ScaricoDataGridView.Rows 'Controlla che il valore sia diverso da NULL If Row.Cells Is Nothing Then Continue For End If 'Quindi somma il valore della cella al totale Total += Row.Cells(4).Value TextBox1.Text = Total Next

Dopo un buon riposo, la mente si rigenera.

Ringrazio comunque tantissimo per i vari aiuti.
Ciao.

TOPOAMORE Profilo | Expert

bravo
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