有時我們需要在GridView中設置欄位來取值,以作為後續動作的資料來源判斷依據,但又不想在使用者瀏覽時顯示此欄位。例:GridView中使用BoundField 來取得存檔日期的值同時將其欄位設為不顯示,<asp:BoundField DataField="存檔日期" Visible="false" />。這時在GridView的RowDataBound事件中使用e.Row.Cells(0).Text的方式取值會發現無法順利取到值。
因此需要使用另一種替代方式來達到此目的的實現,在Asp.Net中有個專為隱藏數值設計的控制項HiddenField,我們要作的就是將原本<asp:BoundField DataField="存檔日期" Visible="false" />的資料繫結方式改為使用HiddenField的Value值與存檔日期繫結,並將此HiddenField控制項置於GridView的TemplateField中。
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="SaveTime" runat="server" Value='<%# Eval("存檔日期") %>' />
</ItemTemplate>
</asp:TemplateField>
如此便可在GridView的RowDataBound事件中使用FindControl的方式來取得GridView各個欄位中的存檔日期值。
Protected Sub GridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Response.Write(CType(e.Row.FindControl("SaveTime"), HiddenField).Value)
End If
End Sub
0 意見:
張貼意見