Somme des éléments d'une colonne dans une gridview [Résolu]

celdu7 11 Messages postés mardi 26 mai 2009Date d'inscription 19 juin 2009 Dernière intervention - 11 juin 2009 à 17:18 - Dernière réponse : celdu7 11 Messages postés mardi 26 mai 2009Date d'inscription 19 juin 2009 Dernière intervention
- 17 juin 2009 à 10:22
Bonjour. Dans le cadre de mon stage je dois réaliser une page web. Le début était assez simple, mais je me retrouve coincé au niveau de ma gridview.
En, effet, je dispose d'une gridview composée des colonnes suivantes :
Rubrique, Montant HT, Montant TVA, Montant TTC, Commentaire(s).
Il faut que je fasse un total des montants TTC dans une TextBox qui est à part de la gridview. Enfin je sais qu'il faut que je fasse ça dans le RowDataBound, mais je ne vois pas du tout comment faire. Je signale bien que je ne veux pas avoir ce résultat dans le footer, mais bien dans une textbox à part.

protected void gvNdFAttente_RowDataBound(object sender, GridViewRowEventArgs e)
    {
           // code pour faire la somme des montants TTC
    }

Merci pour votre aide
Afficher la suite 

7 réponses

Répondre au sujet
celdu7 11 Messages postés mardi 26 mai 2009Date d'inscription 19 juin 2009 Dernière intervention - 17 juin 2009 à 10:22
+3
Utile
Alors voilà j'ai enfin réussi. Je met mon code si ça peut aider quelqu'un par la suite. Mais y a plein de façons différentes de le faire.
 
protected void gvNdFAttente_RowDataBound(object sender, GridViewRowEventArgs e)
    {
if (e.Row.RowType == DataControlRowType.DataRow)
        {
             var txtTTC = e.Row.Cells[3].Controls[0] as TextBox;
              // Calcul du total TTC
            double somme=0;
            if(Double.TryParse(txtTTC.Text, out somme))
                {
                    _total += somme;
                }
               TextBoxTotal.Text = _total.ToString();
        }
}
Je n'ai pas mis tout mon code car il y a d'autres éléments dans mon rowdatabound qui serve à autre chose. Il y a donc ici seulement le code pour faire le total.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de celdu7
scottmat 440 Messages postés samedi 24 mai 2003Date d'inscription 23 janvier 2011 Dernière intervention - 11 juin 2009 à 20:13
0
Utile
salut,

fait une boucle sur ton gridview puis tu récupére ton élément :
TonTextBox.text = GridView1.Rows(i).Cells(1).Text;
Commenter la réponse de scottmat
celdu7 11 Messages postés mardi 26 mai 2009Date d'inscription 19 juin 2009 Dernière intervention - 11 juin 2009 à 20:15
0
Utile
Ok merci je vais essayer ça !
Commenter la réponse de celdu7
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 11 juin 2009 à 23:32
0
Utile
Salut

Regardes ici

http://aspalliance.com/782


<%# GetUnitPrice(decimal.Parse(Eval("UnitPrice").ToString())).ToString("N2") %>

<FooterTemplate>
<%# GetTotal().ToString("N2") %>
</FooterTemplate>



decimal TotalUnitPrice;
decimal GetUnitPrice(decimal Price)
{
TotalUnitPrice += Price;
return Price;
}
decimal GetTotal()
{
return TotalUnitPrice;
}
Commenter la réponse de nhervagault
celdu7 11 Messages postés mardi 26 mai 2009Date d'inscription 19 juin 2009 Dernière intervention - 12 juin 2009 à 08:03
0
Utile
Oui j'avais vu ce code déjà, mais ils font ça dans le footer. Mais je peux quand même essayer de l'adapter.
Merci.
Commenter la réponse de celdu7
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 12 juin 2009 à 22:50
0
Utile
Oups j'ai pas fais gaffe que c''etait  sur la meme ligne.

Solution 1
dans les aspx (je ne suis pas trop sur de la syntaxe)
<%#=Eval("HT")+Eval("TVA")%>

 Soltution 2
dans le aspx.cs (syntaxe approximative)
sur l'evenement onitem_databound
TextBox t1 = e.findcontrol("Textbox1") as TextBox;
t1 = e.dataitem["HT"] + e.dataite["TVA"]

Solution 3
dans le fichie aspx.cs
Ajout d'une propriété calculé à ta source de données
* Classe List<T>
dans T tu as un TTC {get HT+TVA;}
* Dans une datable
ajout d'une datacolonneexpression

Solution 4
* dans la requete SQL

Solutions 5
* dans la requete LINQ ou EF (si tu utilises ces technos)

Donc plusieurs solutions a toi de choisir la plus adaptée ou celle ou tu te sens le plus a l'aise
Commenter la réponse de nhervagault
celdu7 11 Messages postés mardi 26 mai 2009Date d'inscription 19 juin 2009 Dernière intervention - 13 juin 2009 à 12:05
0
Utile
Ok, merci beaucoup pour ces solutions.
Je vous tiendrais au courant quand j'aurais réussi
Commenter la réponse de celdu7

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.