快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

下面,我们来利用PostBackOptions类生成客户端回发脚本串。下面是已经完成的代码:

/// <summary>
/// 获得本书更多内容,请看:
/// http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
/// </summary>
protected override void OnPreRender(EventArgs e)
{
   PostBackOptions pbo = new PostBackOptions(this);
   pbo.AutoPostBack = this.AutoPostBack;
   pbo.PerformValidation = true;
   pbo.TrackFocus = true;
   pbo.ClientSubmit = true;
   pbo.RequiresJavaScriptProtocol = false;
   string strPostBackCode = this.Page.ClientScript.GetPostBackEvent Reference(pbo);

   StringBuilder strPostBackFromClient = new StringBuilder();
   strPostBackFromClient.Append(" function PostBackFromClient_" + this. ClientID + "()");
   strPostBackFromClient.Append(" { "};
   strPostBackFromClient.Append(strPostBackCode + ";");
   strPostBackFromClient.Append(" )");
   if (!Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(),
     "PostBackFromClient_" + this.ClientID))
   {
     Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
      "PostBackFromClient_" + this.ClientID, strPostBackFrom Client. ToString(), true);
   }
   base.OnPreRender(e);
}

方法OnPreRender在第1章讲解控件生命周期时介绍过。它在设计模式下不被调用执行,在运行模式下才执行。一般在此方法中输出一些运行时执行的脚本资源,在上面的代码中我们就是输出一个客户端JavaScript函数。

在方法体中,定义一个PostBackOptions类对象pbo,首先设置属性pbo.AutoPostBack等于主控件的 KingTextBoxCanPostEvent.AutoPostBack属性值,这样把判断是否决定回发的任务交给pbo对象处理;设置属性 pbo.PerformValidation,要求回发之前要在客户端进行验证;设置pbo.TrackFocus属性,在执行完回发后使文本框重新获取焦点;设置pbo.ClientSubmit属性且一定要设置为true,本节就是实现从客户端引发回发事件;设置 pbo.RequiresJavaScriptProtocol属性为false,不用增加"javascript:"前缀,因为这里是文本框而不是超链接,有专门的客户端事件处理。

设置完成PostBackOptions对象的属性后,接着执行如下语句:

string strPostBackCode=this.Page.ClientScript.GetPostBackEventReference(pbo);

以上面定义的PostBackOptions

事件发生之前是否需要在客户端进行验证 RequiresJavaScriptProtocol 获取或设置一个值,该值指示是否为客户端脚本生成了"javascript:"前缀。由于GetPostBackClientHyperlink没有支持 PostBackOptions作为参数的重载方法,所以让GetPostBackEventReference也能够返回用于HyperLink的客户端回发脚本串 TargetControl 获取接收回发事件的目标控件。创建PostBackOptions对象时传入的那个控件 TrackFocus 获取或设置一个值,该值指示回发事件是否应将页返回到当前的滚动位置并将焦点返回到当前控件 ValidationGroup 获取或设置一个控件组,当该控件组回发到服务器时,PostBackOptions将引发对它的验证。验证执行的前提是PerformValidation要设置为true

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号