控制項學習六(AutoPostBack機制和事件的觸發)

 

八.關於AutoPostBack機制和事件的觸發

Server端程式(ASP.NET)想要知道已經RenderClient端的控制項,究竟發生了什麽事件,就一定得來一個postback,否則Server端的ASP.NET程式,根本無從得知Client端網頁(上面的控制項)究竟發生了什麽事件。

這種情況在ASP.NET中時常發生。因此,ASP.NET技術中,乾脆做一個共用的機制,來處理這樣的【PostBack+控制項事件】。

知道這個“共用的機制”,我們可以完美上面的代碼。

Render部分:

    '底下的Render會產生一段按鈕的HTML 例如:<Button> 標題文字 </Button>

    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)

        'Render控制項HTML

        Dim JavaScript As String

        '建立 Postback 用的 JavaScript

        JavaScript = Me.Page.GetPostBackEventReference(Me, "")

        output.AddAttribute("onclick", JavaScript)

        output.AddAttribute("id", Me.ClientID)

        output.AddAttribute("name", Me.ClientID)

        output.RenderBeginTag("button")

        output.Write(Me.Text)

        output.RenderEndTag()

    End Sub

複寫OnLoad事件部分

    '覆寫OnLoad事件

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

        Dim controls As WebControls.WebControl

        Dim args As String

        '改成只剩這行

        If Me.Page.Request("__EVENTTARGET") = Me.ID Then RaiseEvent OnClick()

        MyBase.OnLoad(e)

    End Sub

posted @ 2008-11-15 16:40  yellowwood  阅读(273)  评论(0编辑  收藏  举报
Never Give UP