程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET服務器控件封裝-【事件】-1.2【數據回發】

ASP.NET服務器控件封裝-【事件】-1.2【數據回發】

編輯:關於ASP.NET

上節概述:

上節中主要總結了事件處理的機制、控件事件回發、服務端回發事件的捕獲及 處理和異步回調等幾個方面。

接下來本文將為大家描述“數據回發”的相關細節。

1.IPostBackDataHandler接口

我們封裝的控件如果要實現數據回發功能的話,就必須繼承 IPostBackDataHandler接口並實現接口方法。該接口方法只有兩個:

代碼

1         #region IPostBackDataHandler 成員
2          public bool LoadPostData(string postDataKey,
3                      System.Collections.Specialized.NameValueCollection postCollection)
4         {
5             throw new  NotImplementedException();
6         }
7
8          public void RaisePostDataChangedEvent()
9          {
10            throw new NotImplementedException ();
11         }
12          #endregion

其中,當客戶端觸發回發事件時,控件首先處理LoadPostData()方法將頁面兩 次新舊值進行對比分析,返回true或false。如果新舊值不等返回true,相等則返 回false。當然返回true或false是用控件開發人員自己決定的。但LoadPostData ()方法返回的 true和false是與後文有直接關系的——返回true時,ASP.NET框架 將自動調用RaisePostDataChangeEvent()方法進行必要事件處理;返回false則不 會調用RaisePostDataChangeEvent()方法。

上文中提到了控件的新舊值,那麼舊值存儲在哪裡?新值又怎樣的被傳入呢? 分析下LoadPostData()方法的兩個參數,其中第一個是 String類型的,第二個是 NameValueCollection類型的;可知第二個參數是一個集合類型的參數,所以上文 提到的新值或者舊值很有可能包含在其中。

為了檢驗我們的猜疑,下面還是以一個實例來探討下。

(1).新建一個服務器控件開發工程(命名為PostDataControl)和一個測試項 目。

(如果有不清楚的請參照上節——ASP.NET服務器控件封裝-【事件】-1.1【事 件回發,異步回調】)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved