需要在gridview中显示总价

时间:2014-04-24 02:23:04

标签: asp.net vb.net gridview

只是试图从我的页脚行中的列显示我的总价格。 这是我的代码尝试,但它似乎甚至没有通过它,当我在

中设置一个断点
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

如果您需要更多我的代码,请询问!

1 个答案:

答案 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