Sie die Datentabelle compute Funktion zur Berechnung der Summe verwenden:
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(2).Text = DirectCast(Me.GridView1.DataSource, DataTable).Compute("SUM(Price)", Nothing).ToString
End If
End Sub
Das war mein Testdaten:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
BindFooData()
End If
End Sub
Private Sub BindFooData()
Dim tblFoo As New DataTable("Foo")
tblFoo.Columns.Add(New DataColumn("ID", GetType(Int32)))
tblFoo.Columns.Add(New DataColumn("Product", GetType(String)))
tblFoo.Columns.Add(New DataColumn("Price", GetType(Double)))
Dim drProduct As DataRow = tblFoo.NewRow
drProduct("ID") = 1
drProduct("Product") = "Pencil"
drProduct("Price") = 1
tblFoo.Rows.Add(drProduct)
drProduct = tblFoo.NewRow
drProduct("ID") = 2
drProduct("Product") = "Rubber"
drProduct("Price") = 3
tblFoo.Rows.Add(drProduct)
drProduct = tblFoo.NewRow
drProduct("ID") = 3
drProduct("Product") = "sharpner"
drProduct("Price") = 2
tblFoo.Rows.Add(drProduct)
Me.GridView1.DataSource = tblFoo
Me.GridView1.AutoGenerateColumns = True
Me.GridView1.ShowFooter = True
Me.GridView1.DataBind()
End Sub
Oder Sie könnten es manuell berechnen:
Private AllPrices As New List(Of Double)
Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim price As Double = DirectCast(DirectCast(e.Row.DataItem, DataRowView)("Price"), Double)
AllPrices.Add(price)
ElseIf e.Row.RowType = DataControlRowType.Footer Then
Dim TotalPrice As Double
Dim TotalUnitPriceText As New System.Text.StringBuilder
For Each price As Double In AllPrices
TotalPrice += price
TotalUnitPriceText.Append(price).Append("+")
Next
If TotalUnitPriceText.Length <> 0 Then
TotalUnitPriceText.Length -= 1
TotalUnitPriceText.Append(" = ")
End If
e.Row.Cells(1).Text = TotalUnitPriceText.ToString
e.Row.Cells(2).Text = TotalPrice.ToString
End If
End Sub
Last but not least Sie es mit Ihren SQL-Abfrage mit SUM berechnen konnte.
Wie ist Ihre Gridview gebunden? Autogeneratecolumns. Template-Felder oder gebundene Felder? Wo soll die Summe erscheinen (Fußzeile oder andere Kontrolle)? – naveen
Boud Feld ... normalerweise .... begrenzt auf sqldatasource1 – user559800