ASP.NET伺服器控制項開發(3)

前兩篇介紹了伺服器控制項的基本顯示,屬性的設定,繼承Webcontrol開發控制項等內容,這篇介紹下定製伺服器控制項的事件的處理和回傳數據的處理。

當ASP.NET頁面處理回傳到伺服器端的表單時,兩種信息會傳遞給頁面中的控制項:

回傳事件,如Button一類控制項觸發的回傳,會引發伺服器端事件;

回傳數據:是Web表單中包含的數據,該數據是在Web表單提交到伺服器端時傳遞給如TextBox一類的控制項。

處理回傳數據

PostBack(回傳):ASP.NET控制項提交表單到伺服器端,將信息從瀏覽器傳遞到伺服器端的過程。

我們可能經常會在Page_Load事件中寫這樣的代碼:

protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){

.}}

但是初學的時候我們很少回去問,為什麼要寫這段代碼,只知道這麼寫就是對的。其實這就是數據回傳的一個表現,通過該值指示該頁是否正為響應客戶端回發而載入。

ASP.ENT伺服器控制項處理回傳數據,基本上完成以下兩個工作:

-->繼承並實現IPostBackDataHandler介面的

-->實現RaisePostDataChangedEvent方法,處理回發數據

通過例子說明一下,這裡創建一個自己的文本框:創建一個ASP.NET伺服器控制項項目(MyTextBox)

Code

測試一下:

protectedvoidButton1_Click(objectsender,EventArgse){Label1.Text=NewTextBox1.ViewText;}

只有當文本框中是文字發生變化是,才會引起數據的回發並從新獲得數據。(控制項拖到頁面時,要給viewText賦值)

處理回發事件

ASP.NET伺服器控制項處理回發事件,基本上需要完成以下兩個工作:

-->繼承並實現IPostBackEventHandler介面的

-->實現RaisePostBackEvent方法,處理回發事件

Button控制項繼承IPostBackEventHandler介面(所有的按鈕控制項,ImageButton,LinkButtton都繼承了這個介面)。IPostBackEventHandler介面專門定義了處理回發事件的方法,如果自定義控制項需要處理回發事件,你就需要繼承IPostBackEventHandler介面。

通過例子說明一下,這裡我們定製一個自己的按鈕:創建一個ASP.NET伺服器控制項項目(MyButton)

Code

測試一下:

protectedvoidMyButton1_Click(objectsender,EventArgse){Label1.Text="HelloWorld!!!!!!!!!";}

按鈕的事件回發處理成功。

客戶端回發事件

在asp.net2.0中,Button 控制項多了一個UseSubmitBehavior 屬性,指示 Button 控制項使用客戶端瀏覽器的提交機制(客戶端回發)還是 ASP.NET 回發機制,默認採用ASP.NET回發機制,如果設置為false的話,則需要調用GetPostBackEventReference 方法來返回 Button 的客戶端回發事件。

當設置UseSubmitBehavior 屬性為flase時,運行頁面時,則會發現一段自動生成的javascript代碼(查看源文件)

Code

這裡我們創建一個按鈕,根據屬性的設定,更改其事件回發的方式:

Code

根據屬性Display的屬性的設置,對事件的回發進行控制,如果是Hyperlink則是客戶端回發機制。

小結:新手在對事件的回發上可能會迷糊,但是不要緊,慢慢的理解。簡單的理解事件的回發就是我們點擊一個按鈕發生的事件,而這個事件的處理ASP.NET給我們提供了兩種方式。更多ASP.NET伺服器控制項事件可以參考:

http://msdn.microsoft.com/zh-cn/library/cc437696(VS.71).aspx

http://msdn.microsoft.com/zh-cn/library/xax2hw3x.aspx

寫的不好,希望能對新手有幫助。


推薦閱讀:

控制飲食每天運動,膽固醇多長時間能降下來?
糖尿病併發症控制的關鍵,餐後血糖的波動
烏克蘭抗議者稱已控制首都 總統下落不明(組圖)
如何学习 4 轴无人机的飞控?
豐田P2118 節氣門執行器控制電機電流範圍、怎麼修?

TAG:伺服器 | 控制 | .NET | ASP.NET | 控制項 |