Inviato da Max on 26/03/2008 01.27.17
Ciao a tutti,
ho fatto una paginetta che visualizza il fatturato in una gridview con una riga per ogni mese.
La base dati e' un dataset con una datatable generata da una stored procedure di SQL.
Avrei ora la necessita' di avere anche un propgressivo mese per mese (gennaio =gennaio, febbraio=gennaio+febbraio ecc.)
Ho pensato di usare una variabile che definisco a 0 al pageload e ad ogni evento RowCreated della gridview la incremento. Il mio problema e' pero': come la visualizzo ????

perdonatemi...)
oppure ciclo sulle righe restiruite dalla SP e popolo una datatable che poi uso come source della gridviev.
oppure invece di usare una gridviev uso un repeater ?
piu' in generale mi interesserebbe capire come poter gestire al meglio questi dati, visto che so gia' che poi "di sopra" vorranno vedere i dati raffrontati agli anni precedenti, poi raggruppati per anno/cliente, poi analisi ABC del fatturato ecc ecc.
Qualcuno mi indica la strada migliore ?
Grazie mille.
Max.
Come prima cosa, aggiungi una colonna (di tipo "TemplateField" in questo caso) alla GridView selezionando l'opzione "Add new column..." dello smart tag del controllo.
Dopo aggiungi un controllo al tuo template della riga:
<asp:TemplateField HeaderText="Nuova colonna">
<ItemTemplate>
<asp:Label ID="ValoreCustom" runat="server" ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
A questo punto gestisci l'evento della GridView "RowDataBound":
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//Recuperi il tuo controllo inserito nel template, tramite il suo ID
Label lbl = (Label)e.Row.FindControl("ValoreCustom");
//Indice riga corrente
int iCurr = e.Row.RowIndex;
//Se la riga è una riga che continene dati (tieni presente ad esempio che la prima riga
//che ti verrà restituita è di tipo "Header")
//Allora puoi assegnargli il valore che più ti piace.
if (e.Row.RowType == DataControlRowType.DataRow)
lbl.Text = iCurr.ToString();
}