Ajax 控制
AJAX 代表 Asynchronous JavaScript and XML。這是一項跨平臺的能加速響應時間的技術。AJAX 服務器控件將腳本添加到頁面,它由瀏覽器執行并處理。
然而像其他 ASP.NET 服務器控件一樣,這些 AJAX 服務器控件也能擁有與它們相聯系的方法和事件句柄,它們都在服務器端處理。
在 Visual Studio IDE 里的 control 工具箱含有一組叫作 AJAX 的控制組件。
如果你創建一個 Ajax Enabled site 或者從 Add Item 對話框添加一個 AJAX Web Form,網頁將自動形成,并包含 script manager 控件。ScriptManager 控件為所有的服務器端的控件照顧客戶機端的腳本。
UpdatePanel 控件
UpdatePanel 控件是一個容器控件并且源自 Control 類。它作為它里面的子控件的容器而運作并且不擁有它自己的接口。當它其中的一個控件觸發提交回來,UpdatePanel 干預異步啟動并更新部分頁面。
例如,如果一個 button 控件在 update panel 內,并且它被點擊了,只有 update panel 內的控件將被影響,頁面其他部分的控件將不會被影響。這被叫做部分提交返回或者異步提交返回。
例子
在你的應用程序中添加一個 AJAX 網頁表單。它包含默認的 script manager 控件。插入一個 update panel。將一個 button 控件和一個 label 標簽放置在 update panel 控件內。將另一個 button 和 label 集放置在 panel 外。
設計視圖如下所示:
button 控件對時間處理程序都擁有相同的代碼:
觀察當頁面被執行時,如果總的提交返回按鈕被點擊了,它將更新標簽中都更新時間,但是如果部分提交返回按鈕被點擊,它僅僅更新在 update panel 內的標簽。
以上的片段展示了一個簡單的帶有 ProgressTemplate 標簽的信息。但是,它可以是一張圖片或者其他相關的控件。UpdateProgress 控件顯示每一個異步的返回,除非它使用 AssociatedUpdatePanelID 屬性,被指定為單獨的 update panel。
UpdateProgress 控件的屬性
以下的表格展示了 update progress 控件的屬性。
AssociatedUpdatePanelID | 獲得并用這個控件所聯系的控件設置 update panel 的 ID。 |
Attributes | 獲得并設置 UpdateProgress 控件的 cascading style sheet(CSS)屬性。 |
DisplayAfter | 在處理模板被展示后獲得并以毫秒設置時間。默認是 500。 |
DynamicLayout | 指示進程模板是否被動態展示。 |
ProgressTemplate | 指示模板在一個比 DisplayAfter 時間花了更多時間的異步提交返回的過程中展示。 |
UpdateProgress 控件的方法
以下的表格展示了 update progress 控件的方法:
GetScriptDescriptors | 返回一個 UpdateProgress 控件的客戶端功能所需要的組件,行為和客戶端控件的列表。 |
GetScriptReferences | 返回一個客戶端腳本依賴 UpdateProgress 控件的列表。 |
Timer 控件
timer 控件被用來自動初始化提交返回。這可以用兩種方式完成:
(1)設置 UpdatePanel 控件的 Triggers 屬性。
<Triggers> <asp:AsyncPostBackTrigger ControlID="btnpanel2" EventName="Click" /> </Triggers>(2)直接在 UpdatePanel 內部放置一個 timer 控件來作為一個子控件的觸發器。一個單獨的 timer 能作為許多 UpdatePanel 的觸發器。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> <ContentTemplate> <asp:Timer ID="Timer1" runat="server" Interval="1000"> </asp:Timer> <asp:Label ID="Label1" runat="server" Height="101px" style="" > </asp:Label> </ContentTemplate> </asp:UpdatePanel>