2009-05-10 6 views
1

J'ai vu plusieurs tutoriels sur la façon d'y parvenir. Cependant, à mon avis, ils exigent beaucoup de connaissances préalables sur la façon de se référer par programme à chaque élément.Grille ASP.Net Voir total roulant dans Gridview

Est-ce que quelqu'un a un lien vers ou peut créer un exemple relativement basique de la façon d'obtenir un total cumulé dans le pied de page pour un ASP: Gridview?

Répondre

2

C'est ce que j'utilise:

protected void InvoiceGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    var invoice = (Invoice) e.Row.DataItem; 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     totalAmt = 0; 
    } 
    else if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     totalAmt += invoice.Amount; 
    } 
    else if (e.Row.RowType == DataControlRowType.Footer) 
    { 
     var amountTotalLabel = (TextBox) e.Row.FindControl("AmountTotalTextBox"); 
     amountTotalLabel.Text = totalAmt.ToString("0.00"); 
    } 
} 

TotalAmt est variable d'instance protégée sur la page. Je ne sais pas si c'est ce que vous cherchiez en fonction de votre commentaire sur les «connaissances programmatiques». Mais cela fonctionne et est assez simple. Le gridview est lié à un List<Invoice> dans ce cas.

0

Ajouter le modèle de pied de page et sur la RowDataBound, une variable globale pour stocker la somme de sommation,

A type = e.Row.RowType DataControlRowType.DataRow faire la somme, et @ la e.Row. RowType = DataControlRowType.Footer stocker le vale dans la cellule appropriée

pour plus d'info regarder @MSDN LINK

0

Voici comment je le fais. Très facile. Vous venez de totaliser la ligne contenant vos numéros et de les placer dans le pied de page.

((Label)GridView.FooterRow.Cells[1].FindControl("your_label")).Text = ds.Tables[0].Compute("sum(Column_name)", "").ToString(); 
0

Je pense que la méthode que je l'utilise est assez basique et ne nécessite pas référence à des colonnes dans programatically GridView, si c'est ce que vous voulez dire. C'est l'une des bonnes choses est qu'une fois que vous avez écrit les fonctions back-end, vous pouvez ajouter des totaux à n'importe quel Gridview en éditant seulement le fichier .aspx.

Dans votre GridView, faire la colonne comme ceci:

<asp:TemplateField HeaderText="Hours"> 
    <ItemTemplate><%#DisplayAndAddToTotal(Eval("Hours").ToString(), "Hours")%></ItemTemplate> 
    <FooterTemplate><%#GetTotal("Hours")%></FooterTemplate> 
</asp:TemplateField> 

Le second paramètre à DisplayAndAddToTotal peut être une chaîne que vous voulez tant que vous utilisez la même chaîne dans GetTotal. D'habitude, je n'utilise que le nom du champ. Voici les deux fonctions utilisées, DisplayAndAddToTotal et GetTotal. Ils utilisent une table de hachage pour stocker les totaux afin qu'ils fonctionnent avec n'importe quel nombre de colonnes que vous souhaitez ajouter. Et ils travaillent aussi avec le nombre de "Vrai" pour un champ booléen.

Protected total As Hashtable = New Hashtable() 

Protected Function DisplayAndAddToTotal(itemStr As String, type As String) As Double 
    Dim item As Double 

    If itemStr = "True" Then 
     item = 1 

    ElseIf Not Double.TryParse(itemStr, item) Then 
     item = 0 
    End If 

    If total.ContainsKey(type) Then 
     total(type) = Double.Parse(total(type).ToString()) + item 
    Else 
     total(type) = item 
    End If 

    Return item 
End Function 

Protected Function GetTotal(type As String) As Double 
    Try 
     Dim result As Double = Double.Parse(total(type).ToString()) 
     Return result 
    Catch 
     Return 0 
    End Try 
End Function