欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

使用 UpdatePanel

系統 1781 0
1 概述
ASP.NET UpdatePanel 控件能讓你創建豐富的、以客戶為中心的 Web 應用程序。使用 UpdatePanel 控件,可以刷新選擇的頁面部分而不是使用回發來刷新整個頁面,這就像是執行了一個局部頁面更新一樣。包含一個 ScriptManager 和一個或多個 UpdatePanel 的 Web 頁面會自動加入局部頁面更新,而不需要定制客戶端代碼。

1.1 場景
UpdatePanel 是一個服務器控件,可以幫助你開發使用復雜客戶端行為的 Web 頁面,使 Web 頁面呈現更多的交互給用戶。服務器和客戶端之間協調以僅更新指定的頁面部分通常需要很深的 ECMAScript(Javascript)知識。然而,通過使用UpdatePanel 控件,可以不用編寫任何客戶端腳本就可以給頁面加入局部頁面更新。如果你愿意,可以添加定制的客戶端腳本以增強客戶端用戶體驗。在使用 UpdatePanel 控件時,頁面行為是獨立于瀏覽器的,并且潛在的減少了客戶端和服務器的數據傳輸量。

1.2 背景
UpdatePanel 的工作是指定無須刷新整個頁面就可以更新的區域,這個過程由 ScriptManager 服務器控件和客戶端 PageRequestManager 類進行協調。當局部更新可用時,控件可以異步的發送到服務器。異步回發的行為和常規回發一樣,結果服務器頁面會執行完整的頁面和控件生命周期。然而,使用異步回發,頁面更新僅限于封閉在 UpdatePanel 控件中標記為更新的頁面區域。服務器僅為受影響的元素發送 HTML 標記到瀏覽器。在瀏覽器中,客戶端 PageRequestManager 類執行文檔對象模型 ( DOM ) 操作用更新的標記替換得已有的 HTML 。下面的圖例展示了頁面的第一次加載,和后來的刷新 UpdatePanel 控件的內容的異步回發。
使用 UpdatePanel

2 UpdatePanel 的使用
UpdatePanel 的基本使用方法非常簡單,向頁面中添加一個 SciprtManager 控件和一個或多個 UpdatePanel 控件,再把要局部更新的頁面元素和觸發更新的控件放到 UpdatePanel 控件的 ContentTemplate 屬性中即可。如下列代碼所示,在其中添加了一個 Button 控件:
?1 < asp:UpdatePanelID = " UpdatePanel1 "
?2 ????????UpdateMode = " Conditional "
?3 ????????runat = " server " >
?4 ???? < ContentTemplate >
?5 ???????? < asp:Button?ID = " Button1 "
?6 ????????????Text = " RefreshPanel "
?7 ????????????runat = " server " />
?8 ???? </ ContentTemplate >
?9 </ asp:UpdatePanel >
10
要使用 UpdatePanel 控件可用,必須設置 ScriptManager 的 EnablePartialRendering? 屬性為 true 。
UpdatePanel 控件可以輸出為 <div> 元素或 <span> 元素,以在頁面中形成一個塊或內聯的區域,可以設置其 RenderMode 屬性為 Block ( 默認,<div>)或 Inline ( <span> ) 來指定。

2.1 指定 UpdatePanel 的內容
可以使用 ContentTemplate 屬性以聲明的方式或者在設計器中添加內容到 UpdatePanel 控件中。在標記中,這個屬性顯示為 <ContentTemplate> 元素。如果要以編程的方式添加內容,可以使用 ContentTemplateContainer 屬性。
包含一個或多個 UpdatePanel 控件的頁面在第一次輸出時,所有 UpdatePanel 控件中的內容都會被輸出并被發送到瀏覽器。在后來的異步更新中,單個 UpdatePanel 控件中的內容可能會被更新。更新依賴于面板的設置、導致回發的元素以及指定給每個面板的代碼。

2.2 指定 UpdatePanel 的觸發器
默認情況下,UpdatePanel 控件中的任何控件回發都將導致異步回發并刷新面板的內容。然而,也可以配置頁面中且不在面板中的其他控件來刷新 UpdatePanel 控件。可以為 UpdatePanel 控件定義一個觸發器來完成此目的。觸發器是指定哪個回發控件和事件來導致面板的更新的綁定。當觸發器控件指定的事件觸發時(如一個按鈕的 Click 事件),更新面板將被刷新。
下列示例展示了如何添加一個觸發器到 UpdatePanel 面板中去。
< asp:Button?ID = " Button1 "
?????????Text
= " Refresh?Panel "
??????????runat
= " server " ? />
< asp:ScriptManager?ID = " ScriptManager1 "
??????????runat
= " server " ? />
< asp:UpdatePanel?ID = " UpdatePanel1 " ???UpdateMode = " Conditional " ?runat = " server " >
?????????
< Triggers >
????????????????
< asp:AsyncPostBackTrigger?ControlID = " Button1 " ? />
????????
</ Triggers >
???????
< ContentTemplate >
??????????????
< fieldset >
??????????????????
< legend > UpdatePanel?內容 </ legend >
??????????????????
<%= DateTime.Now.ToString()? %>
??????????????
</ fieldset >
???????
</ ContentTemplate >
</ asp:UpdatePanel >
觸發器由在 UpdatePanel 控件的 <Triggers> 元素中的 <asp:AsyncPostBackTrigger> 元素定義。(如果是在 Visual Studio 中編輯頁面,就可以在 UpdatePanel 的屬性面板中單擊 Triggers 屬性后面的省略號按鈕打開一個 UpdatePanelTrigger 集合編輯器對話框來創建觸發器。)觸發器必要的屬性是 ControlID ,用它來指定可以導致面板更新的控件的 ID 。
有上例中,雖然按鈕沒有聲明在面板中,但是由于在面板中指定了它為觸發器,所以當按鈕事件觸發時,會產生其被包含中面板中同樣的結果,即面板被更新。
觸發器控件的事件是可選的,如果沒有指定事件,觸發器將使用控件的默認事件。例如,對于 Button 控件,默認事件就是 Click 事件。

2.3 在母版頁中使用 UpdatePanel
要在母版頁中使用 UpdatePanel 控件,必須確定如何使用 ScriptManager 控件。如果在母版頁面中放置了一個 ScriptManater 控件,則 ScriptManager 控件可以在所有的內容面中起作用。(如果要在內容頁中聲明腳本或服務,可以在頁面中添加一個 ScriptManagerProxy,它具有和 ScriptManager 差不多一樣的屬性和方法。)
如果在母版頁中沒有包含 ScriptManager 控件,就必須在包含 UpdatePanel 控件的每個內容頁是都要放置一個 ScriptManager 控件,設計的選擇依賴于在應用程序中將如何管理客戶端腳本。
如果在母版頁中包含了 ScriptManager 控件,而在某個內容頁中又不打算使用局部頁面輸出的功能時,必須用程序設置內容中的 ScriptManager 控件的 EnablePartialRendering 為 false? 。

2.4 使用嵌套的 UpdatePanel 控件
UpdatePanel 控件可以嵌套使用,如果父面板被刷新,則所有嵌套的面板也都會被刷新。
下列代碼展示了如何在一個 UpdatePanel 控件中定義另一個 UpdatePanel 控件。
?1 <% @?Page?Language = " C# " ? %>
?2 <! DOCTYPE?html?PUBLIC? " -//W3C//DTD?XHTML?1.0?Transitional//EN "
?3 ? " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
?4 < html?xmlns = " http://www.w3.org/1999/xhtml " >
?5 < head?id = " Head1 " ?runat = " server " >
?6 ???? < title > UpdatePanelUpdateMode?示例 </ title >
?7 ???? < style?type = " text/css " >
?8 ????div.NestedPanel
?9 ???? {
10 ??????position:?relative;
11 ??????margin:? 2 % ? 5 % ? 2 % ? 5 % ;
12 ????}

13 ???? </ style >
14 </ head >
15 < body >
16 ???? < form?id = " form1 " ?runat = " server " >
17 ???????? < div >
18 ???????????? < asp:ScriptManager?ID = " ScriptManager "
19 ???????????????????????????????runat = " server " ? />
20 ???????????? < asp:UpdatePanel?ID = " OuterPanel "
21 ?????????????????????????????UpdateMode = " Conditional "
22 ?????????????????????????????runat = " server " >
23 ???????????????? < ContentTemplate >
24 ???????????????????? < div >
25 ???????????????????????? < fieldset >
26 ???????????????????????????? < legend > 外層?Panel? </ legend >
27 ???????????????????????????? < br? />
28 ???????????????????????????? < asp:Button?ID = " OPButton1 "
29 ????????????????????????????????????????Text = " 外層面板按鈕 "
30 ????????????????????????????????????????runat = " server " ? />
31 ???????????????????????????? < br? />
32 ????????????????????????????最后更新在:
33 ???????????????????????????? <%= ?DateTime.Now.ToString()? %>
34 ???????????????????????????? < br? />
35 ???????????????????????????? < br? />
36 ???????????????????????????? < asp:UpdatePanel?ID = " NestedPanel1 "
37 ???????????????????????????????????????????????UpdateMode = " Conditional "
38 ???????????????????????????????????????????????runat = " server " >
39 ???????????????????????????????? < ContentTemplate >
40 ???????????????????????????????????? < div? class = " NestedPanel " >
41 ???????????????????????????????????????? < fieldset >
42 ???????????????????????????????????????????? < legend > 嵌套面板 </ legend >
43 ???????????????????????????????????????????? < br? />
44 ????????????????????????????????????????????最后更新在:
45 ???????????????????????????????????????????? <%= ?DateTime.Now.ToString()? %>
46 ???????????????????????????????????????????? < br? />
47 ???????????????????????????????????????????? < asp:Button?ID = " NPButton1 "
48 ????????????????????????????????????????????????????????Text = " 嵌套面板按鈕 "
49 ????????????????????????????????????????????????????????runat = " server " ? />
50 ???????????????????????????????????????? </ fieldset >
51 ???????????????????????????????????? </ div >
52 ???????????????????????????????? </ ContentTemplate >
53 ???????????????????????????? </ asp:UpdatePanel >
54 ???????????????????????? </ fieldset >
55 ???????????????????? </ div >
56 ???????????????? </ ContentTemplate >
57 ???????????? </ asp:UpdatePanel >
58 ???????? </ div >
59 ???? </ form >
60 </ body >
61 </ html >
62

2.5 用程序創建 UpdatePanel 控件
要用程序添加一個 UpdatePanel 控件到頁面中,可以先創建一個新的 UpdatePanel 實例,然后使用它的 ContentTemplateContainer 屬性的 Add( Control ) 方法來添加其他控件。不能直接使用 ContentTemplate? 屬性來添加控件。
如果 UpdatePanel 控件是程序添加的,只有來自同樣命名容器如 UpdatePanel 控件中控件的回發才可以被使用為面板的觸發器。
下列代碼演示了如何用程序添加 UpdatePanel 控件。
<% @?Page?Language = " C# " ? %>
<! DOCTYPE?html?PUBLIC? " -//W3C//DTD?XHTML?1.0?Transitional//EN "
?
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< script?runat = " server " >
????
protected ? void ?Page_Load( object ?sender,?EventArgs?e)
????
{
????????UpdatePanel?up1?
= ? new ?UpdatePanel();
????????up1.ID?
= ? " UpdatePanel1 " ;
????????up1.UpdateMode?
= ?UpdatePanelUpdateMode.Conditional;
????????Button?button1?
= ? new ?Button();
????????button1.ID?
= ? " Button1 " ;
????????button1.Text?
= ? " Submit " ;
????????button1.Click?
+= ? new ?EventHandler(Button_Click);
????????Label?label1?
= ? new ?Label();
????????label1.ID?
= ? " Label1 " ;
????????label1.Text?
= ? " A?full?page?postback?occurred. " ;
????????up1.ContentTemplateContainer.Controls.Add(button1);
????????up1.ContentTemplateContainer.Controls.Add(label1);
????????Page.Form.Controls.Add(up1);

????}

????
protected ? void ?Button_Click( object ?sender,?EventArgs?e)
????
{
????????((Label)Page.FindControl(
" Label1 " )).Text? = ? " Panel?refreshed?at? " ? +
????????????DateTime.Now.ToString();
????}

</ script >
< html?xmlns = " http://www.w3.org/1999/xhtml " >
< head?id = " Head1 " ?runat = " server " >
????
< title > UpdatePanel?Added?Programmatically?Example </ title >
</ head >
< body >
????
< form?id = " form1 " ?runat = " server " >
????????
< div >
????????????
< asp:ScriptManager?ID = " TheScriptManager "
???????????????????????????????runat
= " server " ? />
????????
</ div >
????
</ form >
</ body >
</ html >


3 UpdatePanel 的關鍵屬性
ChildrenAsTriggers:
指示來自 UpdatePanel 控件的直接子控件的回發是否更新面板的內容。設置為 true 時更新,否則不更新,默認為 true 。如果此屬性設置為 false ,UpdatePanel 控件的 UpdateMode 就必須設置為 Conditional ,否則會拋出 InvalidOperationException 異常。
UpdateMode:
指示什么時候需要更新面板。當一個 UpdatePanel 控件沒有包含在另一個 UpatePanel 控件中時,面板的更新是根據 UpdateMode 、ChildrenAsTriggers 屬性的設置,以及觸發器的集合來進行的。當一個 UpdatePanel 控件在另一個 UpdatePanel 控件內部時,子面板會自動在父面板更新時更新。
UpdatePanel 控件的內容在下列情形下會更新:
  • 如果 UpdateMode 屬性設置為 Alwarys 時,UpdatePanel 控件中的內容會在源自頁面上任何地方的每個回發時更新。這包括由包含在其他 UpdatePanel 控件中的控件的回發和沒有在 UpdatePanel 控件中的回發。
  • 如果 UpdatePanel 控件嵌套在另一個 UpdatePanel 控件中時,父面板更新時它也會被更新。
  • 如果 UpdateMode 屬性被設置為 false 時,且出現下列條件之一時:
    • 顯式調用 UpdatePanel 控件的 Update() 方法。
    • 由 UpdatePanel 控件中的 Triggers 屬性定義的觸發器控件引起的回送。在這種情況下,控件會顯式的觸發面板內容的更新。定義為觸發器的控件可以在 UpdatePanel 控件的內部也可以在其外部。
    • ChildrenAsTriggers 屬性設置為 true ,并且是由 UpdatePanel 控件中的子控件導致的回發。在嵌套的 UpdatePanel 控件中的子控件不會引起外層 UpdatePanel 控件的更新,除非顯示的定義為觸發器。
4 總結
由以上內容可以看出,使用 UpdatePanel 控件可以方便的幫助大家開發出具有 AJAX 特性的 ASP.NET 應用程序來。當然,它也不是萬能的,過度的使用會引起一定的性能開銷,同時它還與現在的部分 ASP.NET 控件不兼容,如 TreeView、Menu,以及 WebParts 控件等。
?
TrackBack:http://www.cnblogs.com/cxy521/archive/2008/01/22/1048264.html

使用 UpdatePanel


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品国产亚洲精品不卡 | 97日日| 小视频在线观看免费 | 草草线在成年免费视频网站 | 五月婷婷综合激情 | 青青99| 999精品免费视频 | www久久av| 日本亚洲国产精品久久 | 亚洲一区视频在线 | 日本在线视频一区二区 | 国产永久福利 | 欧洲色综合| 日韩欧美在线观看视频 | 精品免费国产一区二区三区四区介绍 | 国产短视频精品区第一页 | 鲁久久| 成人午夜性a一级毛片美女 91精选 | 狠狠色噜噜狠狠狠狠米奇7777 | 国产精品三级国语在线看 | 99午夜高清在线视频在观看 | 嗯啊你轻点好深啊hh在线播放 | 欧美日韩三区 | 国产在线精品区 | 一区二区三区免费视频观看 | 亚洲 无码 自拍 欧美 小说 | 免费观看呢日本天堂视频 | 国产成人av一区二区三区 | 国内精品视频免费观看 | 亚洲成人在线网 | 一区二区三区四区国产精品视频 | 99在线这精品视频 | 亚洲精品在线看 | 久久久久91 | 波多野结衣在线资源 | 欧美资源在线观看 | 国产一区二区精品尤物 | 亚洲人人| 新婚少妇小倩给老许泄火 | 青娱乐免费视频 | 亚洲一级在线观看 |