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