Вы можете использовать функцию Datatable compute для вычисления суммы:
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
Это были мои тестовые данные:
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
Или вы можете рассчитать это вручную:
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
И последнее, но не менее важное: вы можете рассчитать его с помощью SQL-запроса с помощью SUM .