快速业务通道

庖丁解牛Asp.net3.5控件和组件开发技术系列—事件和数据回发机制(二)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
     theForm.submit();
     }
   }
   // 
</script>
<script
   src="/WebSite/WebResource.axd?d=LJzp5npg1ML-gzj2wXG0Nw2&amp;t=633349 
   957025365186" type="text/javascript">
</script>
<script type="text/javascript">
//<![CDATA[ 
   function PostBackFromClient_KingTextBoxCanPostEvent1() { setTimeout (''WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("KingTextBoxCanPost Event1", "", true, "", "", true, true))'', 0); }// 
</script>
   <div>
     <input type="text" name="KingTextBoxCanPostEvent1" value="" onblur=''PostBackFromClient_KingTextBoxCanPostEvent1();''
   />
</div>

与之前KingTextBox输出的相同的部分就不说了,只介绍一下不同的地方。先看最下面主控件的结构,鼠标丢失焦点的处理方法:

onblur=''PostBackFromClient_KingTextBoxCanPostEvent1();''

onblur事件调用的客户端函数为:

PostBackFromClient_KingTextBoxCanPostEvent1();

函数的方法名正对应于我们在主控件中输出的客户端回调函数:

<script type="text/javascript">
   //<![CDATA[ 
   function PostBackFromClient_KingTextBoxCanPostEvent1() { setTimeout (''WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("KingTextBoxCanPost Event1", "", true, "", "", true, true))'', 0); }//.
</script>

回调函数PostBackFromClient_KingTextBoxCanPostEvent1中的函数体代码与之前也有所不同。它首先调用了一个JavaScript函数setTimeOut(表示在一定时间后才执行其参数指定的方法)。 WebForm_DoPostBackWithOptions()函数定义在另一个脚本资源文件中,该文件定义了表单回传,回调以及维持页面滚动位置所需的方法和一些工具性的函数,比如用于回调的WebForm_DoCallback()函数,以及获得DOM对象位置的 WebForm_GetElementPosition()等。WebForm_DoPostBackWithOptions()函数支持7个参数,分别是:eventTarget,eventArgument,validation,validationGroup,actionUrl,trackFocus,clientSubmit,功能与PostBackOptions的成员一一对应。脚本资源对应的输出源代码从输出代码中也能够找到,如下:

<script
   src="/WebSite/WebResource.axd?d=LJzp5npg1ML-gzj2wXG0Nw2&amp;t=63334
   9957025365186" type="text/javascript">
</script>

脚本资源是指把脚本文件、图片、样式等文件在编译时跟主控件一块打包到DLL中。再按上面代码中格式进行访问。有关资源文件,后面也有专门的章节介绍。

函数__doPostBack与之前功能相同,就不介绍了。读者或许注意到在最上面的隐藏控件域中,多了以下语句:

<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />

这句从字面意思也能看出,它存储最后焦点控件信息,记得我们在主控件中指定了:

pbo.TrackFocus = true;

表示回发后控件仍然获取焦点,就是通过视图机制来实现客户端和服务端信息传递的。如果您还不明白,应该记得TextBox控件有个Focus方法,如果在后面代码中调用了文本框控件的如下方法:

this.TextBox1.Focus();

则页面也会自动生成__LASTFOCUS隐藏控件,并且如果使用了多个控件,同时使用了TextBox和King

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号