快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
ring.Empty : s);
     }

     set
     {
       ViewState["Text"] = value;
     }
   }

   private bool blnAutoPostBack = false;
   /// <summary>
   /// 是否自动回发
   /// </summary>
   public bool AutoPostBack
   {
     get
     {
       return blnAutoPostBack;
     }
     set
     {
       blnAutoPostBack = value;
     }
   }

   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, strPostBackFromClient.
       ToString(), true);
     }

     base.OnPreRender(e);
   }

   /// <summary>
   /// 生成呈现HTML格式标记
   /// </summary>
   /// <param name="writer"></param>
   protected override void Render(HtmlTextWriter writer)
   {
     StringBuilder sb = new StringBuilder();
     sb.Append("<input type=\"text\" name=");
     sb.Append("\"" + UniqueID + "\"");
     sb.Append(" value=");
     sb.Append("\"" + HttpUtility.HtmlEncode(Text) + "\"");
     sb.Append(" onblur=''" + "PostBackFromClient_" + this.ClientID + "();''");
     sb.Append(" />");
     writer.Write(sb.ToString());
   }

   /// <summary>
   /// 当回发时,装载用户输入的新数据 
   /// </summary>
   /// <param name="postDataKey"></param>
   /// <param name="postCollection">Keys/Values </param>
/// <returns>true表示数据改变,将会执行下面的方法RaisePostDataChangedEvent; 否
    则数据未改变</returns>
   public virtual bool LoadPostData(string postDataKey, NameValueCollection
   postCollection)
   {
     string strOldValue = Text;
    

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