2009-05-10 16 views
1

Ich habe mehrere Tutorials gesehen, wie dies zu erreichen ist.ASP.Net Grid View rollende Summe in Gridview

Meiner Meinung nach erfordern sie jedoch viel Vorwissen darüber, wie man sich programmatisch auf jeden Artikel bezieht.

Hat jemand einen Link zu oder kann ein relativ einfaches Beispiel dafür erstellen, wie man eine laufende Summe in der Fußzeile für einen ASP erreicht: Gridview? Diese

Antwort

2

ist das, was ich benutze:

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 geschützt Instanz-Variable auf der Seite. Nicht sicher, ob es das ist, wonach Sie gesucht haben, basierend auf Ihrem Kommentar zu "programmatischem Wissen". Aber es funktioniert und ist ziemlich geradlinig. Die Gridview ist in diesem Fall an eine List<Invoice> gebunden.

0

die Fußzeile Vorlage hinzufügen und auf dem RowDataBound, hat eine globale Variable die Summe Summe zu speichern,

Am e.Row.RowType = DataControlRowType.DataRow Art tun, um die Summe, und @ die e.Row. RowType = DataControlRowType.Footer speichert das Tal in der entsprechenden Zelle

für weitere Informationen schauen @MSDN LINK

0

Dies ist, wie ich es tun. Sehr leicht. Sie addieren einfach die Zeile mit Ihren Zahlen und legen sie in die Fußzeile.

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

Ich denke, die Methode, die ich verwenden ist ziemlich einfach und erfordert nicht programmatisch zu Spalten in der Gridview Bezug genommen wird, wenn es das ist, was du meinst. Das ist einer der schönen Teile ist, dass, wenn Sie die Back-End-Funktionen geschrieben haben, können Sie Summen zu jeder Gridview hinzufügen, indem Sie nur die ASPX-Datei bearbeiten.

In Ihrem Gridview, machen die Säule wie folgt aus:

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

Der zweite Parameter zu DisplayAndAddToTotal beliebige Zeichenfolge Sie wollen so lange sein können, wie Sie die gleiche Zeichenfolge in getTotal verwenden. Normalerweise verwende ich den Feldnamen aber wieder. Hier sind die zwei Funktionen, DisplayAndAddToTotal und GetTotal. Sie verwenden eine Hashtable, um die Summen zu speichern, so dass sie mit einer beliebigen Anzahl von Spalten arbeiten, die Sie addieren möchten. Und sie arbeiten auch mit dem Zählen der Anzahl von "True" s für ein boolesches Feld.

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