156 messaggi dal 12 ottobre 2007
ciao a tutti...

volevo chiedere aiuto riguardo un piccoo problema:

ho un gridview che attinge i dati da un db access e mi servirebbe sommare tutti i record e visualizzare il totale nel gridview stesso (magari nel footer), poichè dovrò poi esportarlo in excel (quindi mi serve una griglia omogenea).

Come posso sommare i record direttamente sul gridview?

ciao
grazie
Ciao !
Devi intercettare l'evento RowDataBound della tua gridview ed effettuare il conteggio se il tipo di riga che viene eseguita è di tipo DataRow, altrimenti stampare il risultato del conteggio se la riga è di tipo Footer.
Una cosa di questo genere:

protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
ColumnTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Amount"));
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[o1].Text = "Total Rs:";
e.Row.Cells[1].Text = ColumnTotal.ToString();
}
}


Trovi un buon esempio qua:
http://msdn.microsoft.com/en-us/library/bb310553.aspx

Marchi Giuseppe
http://www.peppedotnet.it
puoi gestire l'evento RowDataBound, l'evento viene generato ogni volta che la "riga" viene associata alla rispettiva "riga" delle fonte dati.

recuperi il dato da sommare e tramite la proprietà GridView.FooterRow fai più o meno quello che vuoi del footer :D

ciao marco


p.s. sono arrivato un minuto dopo
Modificato da nostromo il 01 settembre 2008 10.53 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
156 messaggi dal 12 ottobre 2007
intanto grazie ad entrambi per le risp

sono un pò confuso: nel tutorial capisco più o meno il procedimento, ma non mi sono chiari un paio di punti...

qui dice:
// Reference the ProductsRow via the e.Row.DataItem property
Northwind.ProductsRow product =
(Northwind.ProductsRow)
((System.Data.DataRowView)e.Row.DataItem).Row;

solo che usando Access non so come "sostituire" il tutto...
L'esempio utilizza i DataSet di ASP.NET 2.0
Nel tuo caso, quella parte li la devi completamente sostituire e devi andare a prelevare il valore della colonna che vuoi sommare, tramite la proprietà e.Row.Cells; tale valore lo devi sommare ad una varabile globale che ti terrà conto della somma.
Una cosa di questo genere:


private int totale;

protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
int valoreDaSommare = Int32.Parse(e.Row.Cells(0).Text);
totale += valoreDaSommare;
}
else if (e.Row.RowType == DataControlRowType.Footer) 
{ 
e.Row.Cells[0].Text = "Totale:"; 
e.Row.Cells[1].Text = String.Format("{0}", totale); 
} 
}

chiaramente gli indici che ti ho messo nell'esempio, li devi cambiare con gli indici delle colonne che vuoi sommare, e della colonna in cui vuoi inserire il totale (nel footer)

Marchi Giuseppe
http://www.peppedotnet.it
156 messaggi dal 12 ottobre 2007
mi dà un errore strano:

Errore7
'System.Web.UI.WebControls.TableRow.Cells' è 'proprietà' ma è utilizzato come 'metodo'.

??
Cells è una collezione di oggetti.
Quindi per recuperare una singola cella puoi fare:

in c#
TableCell cella = e.Row.Cells[0];


in vb.net
Dim cell As TableCell = e.Row.Cells(0);

Marchi Giuseppe
http://www.peppedotnet.it
156 messaggi dal 12 ottobre 2007
perdonami l'ignoranza ma continua a darmi l'errore di prima...e mi dice "il nome 'e' (di e.Row) non esiste nel contesto corrente)"....

sono una pippa col .net

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC