Я думаю, что метод, который я использую, довольно простой и не требует программной ссылки на столбцы в Gridview, если вы это имеете в виду. Это одна из приятных особенностей: когда вы пишете фоновые функции, вы можете добавлять итоги в любой Gridview, редактируя только файл .aspx.
В вашем GridView сделайте столбец следующим образом:
<asp:TemplateField HeaderText="Hours">
<ItemTemplate><%#DisplayAndAddToTotal(Eval("Hours").ToString(), "Hours")%></ItemTemplate>
<FooterTemplate><%#GetTotal("Hours")%></FooterTemplate>
</asp:TemplateField>
Вторым параметром для DisplayAndAddToTotal может быть любая строка, которую вы хотите, если вы используете ту же строку в GetTotal. Я обычно просто снова использую имя поля. Вот две используемые функции: DisplayAndAddToTotal и GetTotal. Они используют Hashtable для хранения итогов, чтобы он работал с любым количеством столбцов, которые вы хотите сложить. И они также работают с подсчетом числа «Истина» для логического поля.
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