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方法。
轉載于:https://www.cnblogs.com/amboyna/articles/884748.html
總結
以上是生活随笔為你收集整理的asp.NET自定义服务器控件内部细节系列教程五的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 弹出窗口, 不显示工具栏等。
- 下一篇: 盘点8月的手工作品!