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