27 messaggi dal 24 novembre 2005
Ciao,
ho usato un repeater per visualizzare alcuni dati.
Mi piacerebbe visualizzare la somma di tutte le "Somme" nel FooterTemplate. Ho già usato Sum nella sql che mi estrae le, quindi devo procedere via codice.
Che ne so, non c'è modo di sommare i valori mostrati nell'ItemTemplate?


<asp:Repeater ID="RepeaterSum" runat="server" DataSourceID="SqlDataSourceSum">
<ItemTemplate>
<table width="90%">
<tr>
<td width="90%">
<%#DataBinder.Eval(Container.DataItem, "Progetti")%>
</td>
<td align="center">
<%#DataBinder.Eval(Container.DataItem, "Somme")%>
</td>
</tr>
</table>
</ItemTemplate>
<HeaderTemplate>
<div style="width: 198px; height: 15px; background-color: #5D7B9D;"></div>
</HeaderTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>

Chuck Norris, C'E'!
Potresti gestire l'evento ItemDataBound.

decimal totalAmount = 0;
void Repeater1_RowDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        totalAmount += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Somme"));
    else if (e.Item.ItemType == ListItemType.Footer)
    {
  Label lblTotal = new Label();
  lblTotal.Text = String.Format("Totale : {0:c}", totalAmount);
  e.Item.Controls.Add(lblTotal);
    }
}

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<
27 messaggi dal 24 novembre 2005
No, procedo in vb.net così:

Dim TotaleSomme as Integer

Protected Sub RepeaterSum_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)
TotaleSomme = TotaleSomme + ...
End Sub


la soluzione che mi hai scritto non funge. e.row non esiste!?
Qualcuno mi sa indicare come procedere?

Marco

Chuck Norris, C'E'!
27 messaggi dal 24 novembre 2005
Ok, ho risolto così:

Protected Sub RepeaterSum_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)
TotaleSomme = TotaleSomme + DataBinder.Eval(e.Item.DataItem, "Somme")
LabelTotaleGen.text = "Totale " + TotaleSomme.ToString
End Sub

Grazie naighes


Marco

Chuck Norris, C'E'!
la soluzione che mi hai scritto non funge. e.row non esiste!?


Sì, hai ragione.
Il fatto è che ti avevo copiato, incollato e adattato il codice di un esempio che aveva come oggetto il controllo GridView.
Concettualmente è comunque quella la strada che devi seguire.
Ti dovrebbe esser sufficiente fare riferimento alla proprietà e.Item invece che e.Row (salvo altri errori! ).

Nicola Baldi
"Make things as simple as possible, but not simpler."
>>> My blog <<<

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.