• 控制項學習五(PostBack之後觸發事件)


     

    .在PostBack之後觸發事件

    <input type=”button”...>,并不會產生PostBack,因為它不是type=”submit”

    PostBack,其實就是WebFormsubmit

    下面我們讓Button可以PostBack

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

            output.AddAttribute("onclick", Form1.submit();) 加上onclick=Form1.submit();

    postback之前,先把ClientID塞到隱藏欄位中,然後再submit

            output.RenderBeginTag("button")

           output.Write(Me.Text)

           output.RenderEndTag()

      End Sub

    現在,面對另外一個問題,PostBack是產生了,但是onClick事件沒有被觸發,因為我們并沒有在控制項的程式中加上RaiseEvent指令,在什麽地方加RaiseEvent??下面是改后的程式:

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

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

            '註冊一個隱藏欄位

            Me.Page.RegisterHiddenField("For_WebCustomControl1", "")

            'Render控制項HTML碼

            Dim JavaScript As String

            '建立 Postback 用的 JavaScript

            JavaScript = "Form1.For_WebCustomControl1.value='" & Me.ClientID & "';Form1.submit();"

            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

    把控制項ID塞到隱藏欄位幹嗎?

    因為我們要在Postback(Submit)之後,藉由這個隱藏欄位,來判斷究竟是哪一個控制項引起的Postback(Submit),然後觸發相對的事件,我們看程式碼:

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

            '如果隱藏欄位裡面的值是控制項的 ClientID 則觸發 OnClick事件

            If Me.Page.Request.Form("For_WebCustomControl1") = Me.ClientID Then

                RaiseEvent OnClick()

            End If

            MyBase.OnLoad(e)

        End Sub

    我們複寫了控制項的【OnLoad】事件,因為我們要在這個控制項的OnLoad事件裡面判斷,剛才產生的Postback(Submit)究竟是否為自己所引發?

  • 相关阅读:
    数据中心基础设施自动化运维之puppet专项
    centos git版本服务器配置
    安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法
    php5.5 yum源
    CentOS下源码安装Apache2.4+PHP5.4+MySQL5.5
    php升级到5.4
    puppet重申证书
    passwnger
    Http状态消息
    UVA 10168 Summation of Four Primes(数论)
  • 原文地址:https://www.cnblogs.com/htht66/p/1334176.html
Copyright © 2020-2023  润新知