2011-01-03 18 views
0

私は価格の列をcalulateしたい列..price ...gridviewの列セルをどのように計算するのですか?

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

とグリッドビューを持っている....私はGridViewコントロールのPrice列のセルを計算したい////意味.. ...

価格のreultあなたは合計を計算するためのDataTableのcompute機能を使用することができます1 + 3 + 2 = 6

+0

グリッドビューはどのようにバインドされていますか?自動生成列。テンプレートフィールドまたはバインドされたフィールド?あなたはどこで合計を(フッターや他のコントロール)に表示したいですか? – naveen

+0

Boudフィールド...通常.... sqldatasource1にバインドされています – user559800

答えて

0

のように表示されます。

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 

これは私のTESTDATAた:

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 

なく、少なくとも最後に、あなたがSUMとあなたのSQLクエリでそれを計算することができます。

関連する問題