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 節氣門執行器控制電機電流範圍、怎麼修?