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)究竟是否為自己所引發?

  • 相关阅读:
    C# 谈谈代码重构
    收藏.NET 技术社区
    步步为营 .NET三层架构解析 四、Model设计(四种设计方式)
    C# 谈谈abstract用法 和一个简单abstract factory
    步步为营 .NET三层架构解析 一、什么是三层架构
    用户登陆的验证码的制作
    控制部分字体的颜色
    回发或回调参数无效。在配置中使用 <pages enableEventValidation= "true "/> 或在页面中使用 <%@ Page EnableEventValidation= "true " %> 启用了事件验证
    实习记2
    sniffer攻击
  • 原文地址:https://www.cnblogs.com/htht66/p/1334176.html
Copyright © 2011-2022 走看看