第一ASP.NET中在客户端触发服务端事件分为两种情况

A、WebControls  中的  Button  和  HtmlControls  中的  Type  为  submit  的  HtmlInputButton  
  这两种按钮最终到客户端的表现形式为:
    <input name="Submit1" />  
  2.服务端会生成一个  jscript  的方法来处理所有这些事件的发送,这段代码是:

script>

3、每个会引发服务端事件的控件都会在响应的客户端事件中调用上面的代码:  
  比如,HtmlControls  中的  Type  为  button  的  HtmlInputButton  的点击事件  
  <!―客户端的点击事件调用__doPostBack,eventTarget  参数为'Button2',表示是  name  为'Button2’控件触发的事件,eventArgument  为空,表示这个  Type  为  button  的  HtmlInputButton  只有一个客户端触发的服务端事件-->  
  <input language="javascript" onclick="__doPostBack('Button2','')" name="Button2" />  
4、客户端触发事件后调用__doPostBack  方法,将表示触发的控件源的  eventTarget  和事件参数 eventArgument  分别付给两个隐藏域__EVENTTARGET  __EVENTARGUMENT,然后提交  Form,在服务端根据__EVENTTARGET  和__EVENTARGUMENT  来判断是哪个控件的什么事件触发了。

第二、 PostBack  的原理:

 __doPostBack  是一个纯粹并且是非常简单的  javascript  函数,大部分的页面  PostBack  都是由它触发的。注意,这里是“大部分”,因为只有两个Web Server Control    会自己触发页面的  PostBack,其它的所以控件都是通过__doPostBack  函数触发页面的 PostBack,那先来看一下这个函数的定义吧:
CODE1:

 eventArgument; 
            theForm.submit(); 
      } 

通过上面的代码可以看到,__doPostBack  带有两个参数,eventTarget  是标识将要引发页面PostBack  的控件  ID,eventArgument  参数提供了在引发页面  PostBack  事件时所带的额外参数。当然这个函数被函数时,这两个参数的值将赋值给页面的两个隐含变量__EVENTTARGET  和__EVENTARGUMENT,然后调用页面的  submit  方法提交页面表单。这就是为什么我们可以通过Request.Form[“__EVENTTARGET”]获取得到引发页面  PostBack  的控件  ID  的原因。
      了解了__doPostBack  函数后,我们可以很容易的利用它非常方便地自己触发自定义的  PostBack事件。那上面也说了,大部分的控件都是调用。

第三 Button PostBack  做法

引了页面的  PostBack,只有两个控件是例外,Button  和  ImageButton,正是因为它们不是通过调用__doPostBack  来回发事件,所以通过表单隐含变量__EVENTTARGET  和__EVENTARGUMENT  是无法获取得到引发  PostBack  的  Button  或  ImageButton  的  ID  和参数值的,可通过下面的方式实现
1) 在页面中加如  LinkButton ,页面就会在页面中加载  POSTBACK  所需的  JS

 eventArgument; 
      theForm.submit(); 
   } 
2)利用  GetPostBackEventReference  给客户端生成__doPostBack()
如:比如前台页面
<asp:Button > ); 
     }

相关文章:

  • 2021-11-29
  • 2021-08-10
  • 2021-10-11
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
猜你喜欢
  • 2021-09-26
  • 2022-12-23
  • 2021-08-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案