ASP.NET Ajax 控制

2022-06-27 15:42 更新

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' 的控制組件。

1

ScriptManager 控件

ScriptManager 控件是最重要的控件并且必須出現(xiàn)在頁面上以讓其他控件工作。

它有基本語法:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

如果你創(chuàng)建一個 'Ajax Enabled site' 或者從 'Add Item' 對話框添加一個 'AJAX Web Form',網(wǎng)頁將自動形成,并包含 script manager 控件。ScriptManager 控件為所有的服務(wù)器端的控件照顧客戶機(jī)端的腳本。

UpdatePanel 控件

UpdatePanel 控件是一個容器控件并且源自 Control 類。它作為它里面的子控件的容器而運(yùn)作并且不擁有它自己的接口。當(dāng)它其中的一個控件觸發(fā)提交回來,UpdatePanel 干預(yù)異步啟動并更新部分頁面。

例如,如果一個 button 控件在 update panel 內(nèi),并且它被點擊了,只有 update panel 內(nèi)的控件將被影響,頁面其他部分的控件將不會被影響。這被叫做部分提交返回或者異步提交返回。

例子

在你的應(yīng)用程序中添加一個 AJAX 網(wǎng)頁表單。它包含默認(rèn)的 script manager 控件。插入一個 update panel。將一個 button 控件和一個 label 標(biāo)簽放置在 update panel 控件內(nèi)。將另一個 button 和 label 集放置在 panel 外。

設(shè)計視圖如下所示:

2

資源文件如下所示:

<form id="form1" runat="server">
   <div>
      <asp:ScriptManager ID="ScriptManager1" runat="server" />
   </div>

   <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
         <asp:Button ID="btnpartial" runat="server" onclick="btnpartial_Click" Text="Partial PostBack"/>
         <br />
         <br />
         <asp:Label ID="lblpartial" runat="server"></asp:Label>
      </ContentTemplate>
   </asp:UpdatePanel>

   <p> </p>
   <p>Outside the Update Panel</p>
   <p>
      <asp:Button ID="btntotal" runat="server" onclick="btntotal_Click" Text="Total PostBack" />
   </p>

   <asp:Label ID="lbltotal" runat="server"></asp:Label>
</form>

button 控件對時間處理程序都擁有相同的代碼:

string time = DateTime.Now.ToLongTimeString();
lblpartial.Text = "Showing time from panel" + time;
lbltotal.Text = "Showing time from outside" + time;

觀察當(dāng)頁面被執(zhí)行時,如果總的提交返回按鈕被點擊了,它將更新標(biāo)簽中都更新時間,但是如果部分提交返回按鈕被點擊,它僅僅更新在 update panel 內(nèi)的標(biāo)簽。

3

UpdatePanel Control 的屬性

屬性描述
ChildrenAsTriggers這個屬性表示返回是否來自于子控件,這將引起 update panel 的刷新。
ContentTemplate它是內(nèi)容模板并且定義了當(dāng)它出現(xiàn)時什么出現(xiàn)在 update panel 內(nèi)。
ContentTemplateContainer檢索動態(tài)創(chuàng)建的 template container 對象并被用來以編程方式添加子控件。
IsInPartialRendering指出 panel 是否被更新作為部分提交返回的一部分。
RenderMode展示 render 模式??捎玫哪J绞?Block 和 Inline。
UpdateMode通過確定一些條件來獲得或設(shè)置 rendering 模式。
Triggers定義 collection trigger 對象,每一個對應(yīng)于一個引發(fā) panel 自動更新的事件。

UpdatePanel Control 的方法

以下表格展示了 update panel 控件的方法:

方法描述
CreateContentTemplateContainer創(chuàng)建了一個 Control 對象來作為定義 UpdatePanel 控件內(nèi)容的子控件的容器。
CreateControlCollection返回所有包含在 UpdatePanel 控件內(nèi)的控件集合
Initialize如果部分頁面繪制被運(yùn)行的話,初始化 UpdatePanel 控件觸發(fā)器集合。
Update引起 UpdatePanel 控件內(nèi)容的更新。

update panel 的行為依賴于 UpdateMode 屬性和 ChildrenAsTriggers 屬性的值。

方法描述影響
AlwaysFalse不合法的參數(shù)。
AlwaysTrue如果整個頁面更新或者一個它上面的一個子控件返回,UpdatePanel 更新。
ConditionalFalse如果整個頁面更新或者它外部的一個觸發(fā)的控件開始一次更新,UpdatePanel 更新。
ConditionalTrue如果整個頁面更新或者一個它上面的一個子控件返回或者一個它外部的觸發(fā)控件開始一次更新,UpdatePanel 更新。

UpdateProgress 控件

當(dāng)一個或者更多的 update panel 控件被更新時,UpdateProgress 控件提供了瀏覽器的一種反饋。例如,當(dāng)一個用戶登錄或者當(dāng)執(zhí)行一些面向數(shù)據(jù)庫的工作時等待服務(wù)器響應(yīng)。

它提供了如 "Loading page..." 的視覺確認(rèn),表示工作在處理中。

UpdateProgress 控件的語法是:

<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1" >

   <ProgressTemplate>
      Loading...
   </ProgressTemplate>

</asp:UpdateProgress>

以上的片段展示了一個簡單的帶有 ProgressTemplate 標(biāo)簽的信息。但是,它可以是一張圖片或者其他相關(guān)的控件。UpdateProgress 控件顯示每一個異步的返回,除非它使用 AssociatedUpdatePanelID 屬性,被指定為單獨(dú)的 update panel。

UpdateProgress 控件的屬性

以下的表格展示了 update progress 控件的屬性。

屬性描述
AssociatedUpdatePanelID獲得并用這個控件所聯(lián)系的控件設(shè)置 update panel 的 ID。
Attributes獲得并設(shè)置 UpdateProgress 控件的 cascading style sheet(CSS)屬性。
DisplayAfter在處理模板被展示后獲得并以毫秒設(shè)置時間。默認(rèn)是 500。
DynamicLayout指示進(jìn)程模板是否被動態(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ā)器。一個單獨(dú)的 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="width:304px" >
         </asp:Label>
   </ContentTemplate>

</asp:UpdatePanel>

相關(guān)教程

AJAX教程

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號