上一篇討論了如何為子控件添加集合樣式,這次我們討論如何為服務器控件添加客戶端功能 .
1.減輕服務器壓力,增加用戶體驗
服務器功能是強大的,客戶端腳本一點也不弱,現在的ajax技術和Atlas技術就是最好的證明,我們總是期待UI有一個好的效果,flash動畫給我們帶來了很酷的效果,我們至少也可以為我們的服務器控件添加客戶端腳本,一方面減少了服務器端的回傳,一方面又能為控件提供非常酷的效果.我想我們都很喜歡ATLAS裡面很多很酷的控件吧,而且無刷新,服務器控件與客戶端腳本交互使用,那會服務器控件變的更加完美.
經過上面的廢話,下面我們進入正題
2.簡單為服務器控件添加客戶端腳本
我們已經了解到服務器控件呈現後的代碼仍然為HTML,只要你熟悉此服務器控件呈現後標簽和此標簽的元素,你就可以直接在服務器控件中添加
屬性,事件,樣式等等
簡單的添加方法如下:
(1)直接在控件添加屬性,如為Button控件添加簡單的客戶端事件
<asp:Button ID="Button2" runat="server" Text="Button" onmouseover="this.value='鼠標經過'" onmouseout="this.value='鼠標離開'" />
(2)使用AttributeCollection在後台添加添加簡單的客戶端事件,很典型的使用如我們在刪除數據的時候總要彈出一個窗口提醒用戶是否刪除.
Button2.Attributes.Add("onmouseover", "this.value='鼠標經過'");
Button2.Attributes.Add("onmouseout", "this.value='鼠標離開'");
3.復雜客戶端功能處理
先不論服務器端的功能,當客戶端腳本復雜以後,我們會寫在一個js文件裡,可以復用,簡單的腳本邏輯可以<script>標簽內.我們需要封裝.
Page類為我們提供了幾個方法用於實現以下內容,但需要注意的是,asp.net2.0新加了一個類ClientScriptManager,專門用於管理客戶端腳本的方法,使用方法為
ClientScriptManager = Page.ClientScript;
(1)注冊腳本庫(js文件) RegisterClientScriptInclude 方法
(2)發出位於頁面頂部和尾部的腳本 RegisterStartupScript 方法 和 RegisterClientScriptBlock 方法
(3)確保腳本塊在頁面只出現一次 以Is帶頭Registered結尾的四個方法
(4)將控件事件處理程序與客戶端提交事件關聯起來 RegisterOnSubmitStatement 方法
(5)注冊一個數組用來存儲控件自身變量 RegisterArrayDeclaration方法
(6)注冊一個隱藏域 RegisterHiddenField 方法
對於以上方法的具體使用MSDN均給出了具體的示例,剛看的時候感覺方法名比較長,接觸後就會感覺簡單了,對以上方法的使用一定要了解.如果你不想看MSDN的話,那麼推薦看下面幾篇文章,相信對你會有很大幫助.還有建議大家可以看下呈現後的HTML代碼,這樣會加深理解.
從 ASP.NET 服務器控件插入客戶端腳本
使用客戶端腳本