zoukankan      html  css  js  c++  java
  • 控制項學習五(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)究竟是否為自己所引發?

  • 相关阅读:
    使用图形化界面打包自己的类库
    搭建自己的NuGet服务器,上传自定义NuGet包
    在内部架设NuGet服务器
    Prism简介
    Nhibernate Icreteria 分页查询
    uDig介绍
    基于Geoserver配置多图层地图以及利用uDig来进行样式配置
    如何在GeoServer上发布一张地图
    XML的SelectNodes使用方法以及XPath
    coded ui run in interactive mode
  • 原文地址:https://www.cnblogs.com/htht66/p/1334176.html
Copyright © 2011-2022 走看看