2011-01-03 8 views
0

ich habe Rasteransicht mit Spalte ..price ...Wie berechne ich die Spaltenzellen in der Gridview?

Sno.  Product   price ($) 
1   Pencil    1 
2   Rubber    3 
3   sharpner   2 

ich den Preis Spalte calulate wollen .... bedeutet //// i die Zellen in Spalte Preis von Gridview berechnet werden soll .. ...

die reult der Preis wird als 1 + 3 + 2 = 6

gezeigt werden
+0

Wie ist Ihre Gridview gebunden? Autogeneratecolumns. Template-Felder oder gebundene Felder? Wo soll die Summe erscheinen (Fußzeile oder andere Kontrolle)? – naveen

+0

Boud Feld ... normalerweise .... begrenzt auf sqldatasource1 – user559800

Antwort

0

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.

Verwandte Themen