asp.NET自定义服务器控件内部细节系列教程五

如大家要转载,请保留本人的版权:
/*
*Description:asp.NET自定义服务器控件内部细节系列教程
*Auther:崇崇-天真的好蓝
*MSN:chongchong2008@msn.com
*Dates:2007-05-20
*Copyright:ChongChong2008 YiChang HuBei China
*/
五 服务器控件的回传架构

   参与回传架构主要有两个重要的接口IPostBackEventHandler和IPostBackDataHandler接口
   IPostBackEventHandler接口使控件引发一个标志着已经发生回传的事件。
   IPostBackDataHandler接口使控件检索已被传送的表单数据,从而相应的更新状态,然后在服务器端引发事件以标志其状态变化。

   1。IPostBackEventHandler
      1.1 把回传事件映射到服务器端事件
          public interface IPostBackEventHandler
          {
      void RaisePostBackEvent(string eventArguments);
          }
          eventArguments参数是为了如果控件生成了能够引起回传事件的多个HTML标签,那么可以利用这个参数来识别而引发不同的事件。

      1.2 生成回传的客户端脚本
          如果想利用一个超级链接来引起回传,同样需要先实现IPostBackEventHandler接口,然后需要利用下面的方法:
          Page.GetPostBackClientHyperlink(object ,string);

          GetPostBackClientHyperlink主要实现两个功能:
             第一:返回一个字符串"javascript:__doPostBack('youControlUniqueID','')",该字符串包括一个由页面框架生成的到__doPostBack javascript函数的调用。
             第二:告知页面生成两个隐藏域(__EVENTTARGET和__EVENTARGUMENT),以及一个引起回传(____doPostBack)的javascript函数.

    2。IPostBackDataHandler
       为了参与数据回传处理必须实现IPostBackDataHandler接口,它右两个方法
       public interface IPostBackDataHandler
       {
          bool LoadPostDate(string postDateKey , NameValueCollection postCollection);
          void RaisePostDateChangedEvent();
       }

       在加载回传数据阶段,页面查看名/值表单传送集中的每一个名字,并且寻找控件树中与名字匹配的UniqueID控件。如果页面找到这样一个控件,并且这个控件实现IPostBackDataHandler,则页面在这个控件上调用LoadPostData.

       LoadPostData方法有两个参数,一个包含回传元素名称的字符串和一个包含传送表单数据的名/值集的System.Collections.Specialized.NameValueCollection实例。控件可以用回传数据来更新它的状态。
       如果控件状态在回传时改变,而且希望引发事件来标记此变化,那么必须从LoadPostData方法中返回True值。
       当控件的LoadPostData方法返回True时,页面会调用此控件的RaisePostDateChangedEvent方法。

posted @ 2007-09-06 18:50  玉米疯收  阅读(181)  评论(0编辑  收藏  举报