[ASP.NET] 利用 Gridview PreRender 計算統計、總數 -- 插入新行
我們經常使用 Gridview 來呈現相關的報表,也需要將報表的內容做一個彙整呈現,這時你可以另外使用一區塊來呈現結果,當然你也可以單純的將計算結果,直接呈現在 Gridview 的第一行或者是最下方了。
要做類似的 Gridview 資料處理動作(統計、計算)都必須在 Gridview_PreRender 下來處理,最後也不用再 databind()。
Protected Sub GridView1_PreRender(ByVal
sender As Object,
ByVal e As
System.EventArgs) Handles GridView1.PreRender
Dim i, sum As Integer
Dim tt As Table = Me.GridView1.Controls(0) '類似 FindControl 的用意
sum = 0
' 利用 For迴圈 計算統計結果
For i = 1 To
GridView1.Rows.Count - 1
sum = sum + CInt(GridView1.Rows(i).Cells(0).Text)
Next
Dim tc1, tc2, tc3 As New TableCell()
tc1.Text = sum '依 Cell 數量來填入其值
tc2.Text = "X" '沒有要表現什麼,單純用X來表示
tc3.Text = "X"
Dim gv_row As
GridViewRow = New GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal)
'New 一個 Gridview Row 來插入 GridViewRow(rowIndex,
dataItemIndex, rowType, rowState)
gv_row.Cells.Add(tc1)
gv_row.Cells.Add(tc2)
gv_row.Cells.Add(tc3)
tt.Rows.AddAt(i + 1, gv_row) ' i+1 指的是要插入到第幾 ROW
End Sub
Q:可以插入到 i+3 行嗎(也就是隔兩個空行)?
A:可以~但是不能直接指定到 i+3,這樣會顯示超過索引,必須要 New 出額外的兩個 GridViewRow 及 搭配的 TableCell(),才能正常插入兩個空白列。
Reference : Blueshop