W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
AJAX 代表 Asynchronous JavaScript and XML。這是一項(xiàng)跨平臺(tái)的能加速響應(yīng)時(shí)間的技術(shù)。AJAX 服務(wù)器控件將腳本添加到頁(yè)面,它由瀏覽器執(zhí)行并處理。
然而像其他 ASP.NET 服務(wù)器控件一樣,這些 AJAX 服務(wù)器控件也能擁有與它們相聯(lián)系的方法和事件句柄,它們都在服務(wù)器端處理。
在 Visual Studio IDE 里的 control 工具箱含有一組叫作 'AJAX' 的控制組件。
ScriptManager 控件是最重要的控件并且必須出現(xiàn)在頁(yè)面上以讓其他控件工作。
它有基本語(yǔ)法:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
如果你創(chuàng)建一個(gè) 'Ajax Enabled site' 或者從 'Add Item' 對(duì)話框添加一個(gè) 'AJAX Web Form',網(wǎng)頁(yè)將自動(dòng)形成,并包含 script manager 控件。ScriptManager 控件為所有的服務(wù)器端的控件照顧客戶機(jī)端的腳本。
UpdatePanel 控件是一個(gè)容器控件并且源自 Control 類。它作為它里面的子控件的容器而運(yùn)作并且不擁有它自己的接口。當(dāng)它其中的一個(gè)控件觸發(fā)提交回來(lái),UpdatePanel 干預(yù)異步啟動(dòng)并更新部分頁(yè)面。
例如,如果一個(gè) button 控件在 update panel 內(nèi),并且它被點(diǎn)擊了,只有 update panel 內(nèi)的控件將被影響,頁(yè)面其他部分的控件將不會(huì)被影響。這被叫做部分提交返回或者異步提交返回。
在你的應(yīng)用程序中添加一個(gè) AJAX 網(wǎng)頁(yè)表單。它包含默認(rèn)的 script manager 控件。插入一個(gè) update panel。將一個(gè) button 控件和一個(gè) label 標(biāo)簽放置在 update panel 控件內(nèi)。將另一個(gè) button 和 label 集放置在 panel 外。
設(shè)計(jì)視圖如下所示:
資源文件如下所示:
<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 控件對(duì)時(shí)間處理程序都擁有相同的代碼:
string time = DateTime.Now.ToLongTimeString();
lblpartial.Text = "Showing time from panel" + time;
lbltotal.Text = "Showing time from outside" + time;
觀察當(dāng)頁(yè)面被執(zhí)行時(shí),如果總的提交返回按鈕被點(diǎn)擊了,它將更新標(biāo)簽中都更新時(shí)間,但是如果部分提交返回按鈕被點(diǎn)擊,它僅僅更新在 update panel 內(nèi)的標(biāo)簽。
屬性 | 描述 |
---|---|
ChildrenAsTriggers | 這個(gè)屬性表示返回是否來(lái)自于子控件,這將引起 update panel 的刷新。 |
ContentTemplate | 它是內(nèi)容模板并且定義了當(dāng)它出現(xiàn)時(shí)什么出現(xiàn)在 update panel 內(nèi)。 |
ContentTemplateContainer | 檢索動(dòng)態(tài)創(chuàng)建的 template container 對(duì)象并被用來(lái)以編程方式添加子控件。 |
IsInPartialRendering | 指出 panel 是否被更新作為部分提交返回的一部分。 |
RenderMode | 展示 render 模式??捎玫哪J绞?Block 和 Inline。 |
UpdateMode | 通過(guò)確定一些條件來(lái)獲得或設(shè)置 rendering 模式。 |
Triggers | 定義 collection trigger 對(duì)象,每一個(gè)對(duì)應(yīng)于一個(gè)引發(fā) panel 自動(dòng)更新的事件。 |
以下表格展示了 update panel 控件的方法:
方法 | 描述 |
---|---|
CreateContentTemplateContainer | 創(chuàng)建了一個(gè) Control 對(duì)象來(lái)作為定義 UpdatePanel 控件內(nèi)容的子控件的容器。 |
CreateControlCollection | 返回所有包含在 UpdatePanel 控件內(nèi)的控件集合 |
Initialize | 如果部分頁(yè)面繪制被運(yùn)行的話,初始化 UpdatePanel 控件觸發(fā)器集合。 |
Update | 引起 UpdatePanel 控件內(nèi)容的更新。 |
update panel 的行為依賴于 UpdateMode 屬性和 ChildrenAsTriggers 屬性的值。
方法 | 描述 | 影響 |
---|---|---|
Always | False | 不合法的參數(shù)。 |
Always | True | 如果整個(gè)頁(yè)面更新或者一個(gè)它上面的一個(gè)子控件返回,UpdatePanel 更新。 |
Conditional | False | 如果整個(gè)頁(yè)面更新或者它外部的一個(gè)觸發(fā)的控件開始一次更新,UpdatePanel 更新。 |
Conditional | True | 如果整個(gè)頁(yè)面更新或者一個(gè)它上面的一個(gè)子控件返回或者一個(gè)它外部的觸發(fā)控件開始一次更新,UpdatePanel 更新。 |
當(dāng)一個(gè)或者更多的 update panel 控件被更新時(shí),UpdateProgress 控件提供了瀏覽器的一種反饋。例如,當(dāng)一個(gè)用戶登錄或者當(dāng)執(zhí)行一些面向數(shù)據(jù)庫(kù)的工作時(shí)等待服務(wù)器響應(yīng)。
它提供了如 "Loading page..." 的視覺確認(rèn),表示工作在處理中。
UpdateProgress 控件的語(yǔ)法是:
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1" >
<ProgressTemplate>
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
以上的片段展示了一個(gè)簡(jiǎn)單的帶有 ProgressTemplate 標(biāo)簽的信息。但是,它可以是一張圖片或者其他相關(guān)的控件。UpdateProgress 控件顯示每一個(gè)異步的返回,除非它使用 AssociatedUpdatePanelID 屬性,被指定為單獨(dú)的 update panel。
以下的表格展示了 update progress 控件的屬性。
屬性 | 描述 |
---|---|
AssociatedUpdatePanelID | 獲得并用這個(gè)控件所聯(lián)系的控件設(shè)置 update panel 的 ID。 |
Attributes | 獲得并設(shè)置 UpdateProgress 控件的 cascading style sheet(CSS)屬性。 |
DisplayAfter | 在處理模板被展示后獲得并以毫秒設(shè)置時(shí)間。默認(rèn)是 500。 |
DynamicLayout | 指示進(jìn)程模板是否被動(dòng)態(tài)展示。 |
ProgressTemplate | 指示模板在一個(gè)比 DisplayAfter 時(shí)間花了更多時(shí)間的異步提交返回的過(guò)程中展示。 |
以下的表格展示了 update progress 控件的方法:
方法 | 描述 |
---|---|
GetScriptDescriptors | 返回一個(gè) UpdateProgress 控件的客戶端功能所需要的組件,行為和客戶端控件的列表。 |
GetScriptReferences | 返回一個(gè)客戶端腳本依賴 UpdateProgress 控件的列表。 |
timer 控件被用來(lái)自動(dòng)初始化提交返回。這可以用兩種方式完成:
(1)設(shè)置 UpdatePanel 控件的 Triggers 屬性。
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnpanel2" EventName="Click" />
</Triggers>
(2)直接在 UpdatePanel 內(nèi)部放置一個(gè) timer 控件來(lái)作為一個(gè)子控件的觸發(fā)器。一個(gè)單獨(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>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: