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