只是试图从我的页脚行中的列显示我的总价格。 这是我的代码尝试,但它似乎甚至没有通过它,当我在
中设置一个断点Sub gvPayments_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
' add the UnitPrice and QuantityTotal to the running total variables
invoiceTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Total"))
ElseIf e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(0).Text = "Total:"
' for the Footer, display the running totals
e.Row.Cells(5).Text = invoiceTotal.ToString("c")
e.Row.Cells(5).HorizontalAlign = HorizontalAlign.Right
e.Row.Font.Bold = True
End If
End Sub
如果您需要更多我的代码,请询问!
答案 0 :(得分:0)
我喜欢使用一种不需要处理任何事件的方法。它只使用TemplateField和几个不同的函数。在GridView中,按以下方式创建列:
<asp:TemplateField HeaderText="Total">
<ItemTemplate><%#DisplayAndAddToTotal(Eval("Total").ToString(), "Total")%></ItemTemplate>
<FooterTemplate><%#GetTotal("Total")%></FooterTemplate>
</asp:TemplateField>
只要在GetTotal中使用相同的字符串,DisplayAndAddToTotal的第二个参数就可以是您想要的任何字符串。我通常只是再次使用字段名称。以下是使用的两个函数DisplayAndAddToTotal和GetTotal。他们使用Hashtable存储总计,以便它可以与您想要添加的任意数量的列一起使用。它们还可以计算布尔字段的&#34; True&#34;的数量。
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