2014-04-24 85 views
0

剛試圖在我的頁腳行中顯示我的總價格。 這裏是我的代碼來嘗試,但它似乎沒有通過它甚至將我在需要在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 

如果您需要任何更多的我的代碼放在一個破發點,只問!

+0

除非我記錯了頁腳沒有數據綁定 –

+0

也許你應該試試這個在數據綁定 – deostroll

+0

有你添加網格視圖的ShowFooter =「真正的」屬性? –

回答

0

我喜歡使用一種不需要處理任何事件的方法。它只是使用一個TemplateField和一些不同的功能。在你的GridView,使列如下:

<asp:TemplateField HeaderText="Total"> 
    <ItemTemplate><%#DisplayAndAddToTotal(Eval("Total").ToString(), "Total")%></ItemTemplate> 
    <FooterTemplate><%#GetTotal("Total")%></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