文/gxlxzys 出處/博客園
剛接觸這控件的時候,感覺這東西好神奇,把頁面中的東西放進去就能實現(xiàn)異步刷新,其它的什么都不用做。我就這樣一直用了一段時間,最近才發(fā)現(xiàn) UpdatePanel控件并不是個簡單的東東,我想肯定還有像我這樣把UpdatePanel放進去后就什么都不管的人,希望我的貼對大家有些幫助。希 望各位多多支持,如有錯漏,請不吝指正。
UpdatePanel控件(以下簡寫為up)有個屬性:UpdateMode 可取值 Always 和 Conditional ,默認是 Always ,總是進行自動更新,這對服務端是有性能損耗的,我們應盡量使用 Conditional 值,然后在服務端代碼手動調用Update()方法來更新
這里又要牽涉到另一個屬性: ChildrenAsTriggers 可選 true(默認) 和false,這個屬性的作用是:當up內的控件發(fā)生事件(如Click)時,是否自動更新此up的內容,如果選True,則更新,選False則不更 新,但可在事件代碼中調用Update()方法手動更新,如Up1.Update();
這種設定可用于有兩個或多個up的情況,比如up1中放的全是按鈕,像添加、刪除、修改等,up2中放的是gridView等內容顯示控件,up1中的按 鈕btn1調用up2.Update()方法更新up2,如果ChildrenAsTriggers設置為True,則up1也進行了更新,這是沒有必要 的,浪費服務器資源,所以我們要將up1的ChildrenAsTriggers設為False,禁止自動更新。
其實將按鈕放在up1中,只是要讓這些按鈕變成異步回轉按鈕,如果你只有一個按鈕,單獨放在一個up中,顯然沒有必要,那該如何做呢?有兩個方法:
1、在頁面的page_load方法中注冊, 如:ScriptManager1.RegisterAsyncPostBackControl(btn1);要特別注意的是,不用放在if(!IsPostBack){}中,否則無效。
2、 使用up控件的Triggers屬性,如下圖所示,點添加按鈕右邊的小三角選擇AsyncPostBackTrigger,然后在ControlID中選 擇要進行異步回傳的控件,EventName中選擇此按鈕中的哪個事件進行異步回傳,圖中我選的是Click,這樣一來我將按鈕放在up外面,點擊一樣能 進行異步更新。這樣設定后就不需要手動調用Update()方法了,方法1是需要的。
你 會發(fā)現(xiàn)小三角下有兩個選項,那第二個是用來做什么的呢?PostBack,當然是頁面回傳了,如果把上一步中的按鈕設為PostBack,那點按鈕就不會 是局部更新,而是整頁回送了。這個其實也是很有用的,很多人都知道up的異步更新不支持FielUpload控件,我那時候做程序是把 FileUpload放在up外的,可是這樣會影響頁面整體布局,現(xiàn)在終于知道怎么做了。我還是截張圖吧:
我把FileUpload放在up中,點上傳按鈕就能上傳圖片了
一般情況下,我們應將用于顯示數(shù)據(jù)的東西才放到up中,如gridview等。并且盡量使用手動更新模式,這樣才能讓程序執(zhí)行起來順暢而高效,當然了,如果頁面很簡單的話就沒并要搞這么復雜,全部默認就行了。今天就到這,歡迎指正批評。
我也是看了《ASP.NET AjAX經(jīng)典范例168(附光盤V C# 版)章立民》這本書才知道這些的,這書非常不錯,建議大家買一本。
剛接觸這控件的時候,感覺這東西好神奇,把頁面中的東西放進去就能實現(xiàn)異步刷新,其它的什么都不用做。我就這樣一直用了一段時間,最近才發(fā)現(xiàn) UpdatePanel控件并不是個簡單的東東,我想肯定還有像我這樣把UpdatePanel放進去后就什么都不管的人,希望我的貼對大家有些幫助。希 望各位多多支持,如有錯漏,請不吝指正。
UpdatePanel控件(以下簡寫為up)有個屬性:UpdateMode 可取值 Always 和 Conditional ,默認是 Always ,總是進行自動更新,這對服務端是有性能損耗的,我們應盡量使用 Conditional 值,然后在服務端代碼手動調用Update()方法來更新
這里又要牽涉到另一個屬性: ChildrenAsTriggers 可選 true(默認) 和false,這個屬性的作用是:當up內的控件發(fā)生事件(如Click)時,是否自動更新此up的內容,如果選True,則更新,選False則不更 新,但可在事件代碼中調用Update()方法手動更新,如Up1.Update();
這種設定可用于有兩個或多個up的情況,比如up1中放的全是按鈕,像添加、刪除、修改等,up2中放的是gridView等內容顯示控件,up1中的按 鈕btn1調用up2.Update()方法更新up2,如果ChildrenAsTriggers設置為True,則up1也進行了更新,這是沒有必要 的,浪費服務器資源,所以我們要將up1的ChildrenAsTriggers設為False,禁止自動更新。
其實將按鈕放在up1中,只是要讓這些按鈕變成異步回轉按鈕,如果你只有一個按鈕,單獨放在一個up中,顯然沒有必要,那該如何做呢?有兩個方法:
1、在頁面的page_load方法中注冊, 如:ScriptManager1.RegisterAsyncPostBackControl(btn1);要特別注意的是,不用放在if(!IsPostBack){}中,否則無效。
2、 使用up控件的Triggers屬性,如下圖所示,點添加按鈕右邊的小三角選擇AsyncPostBackTrigger,然后在ControlID中選 擇要進行異步回傳的控件,EventName中選擇此按鈕中的哪個事件進行異步回傳,圖中我選的是Click,這樣一來我將按鈕放在up外面,點擊一樣能 進行異步更新。這樣設定后就不需要手動調用Update()方法了,方法1是需要的。
你 會發(fā)現(xiàn)小三角下有兩個選項,那第二個是用來做什么的呢?PostBack,當然是頁面回傳了,如果把上一步中的按鈕設為PostBack,那點按鈕就不會 是局部更新,而是整頁回送了。這個其實也是很有用的,很多人都知道up的異步更新不支持FielUpload控件,我那時候做程序是把 FileUpload放在up外的,可是這樣會影響頁面整體布局,現(xiàn)在終于知道怎么做了。我還是截張圖吧:
我把FileUpload放在up中,點上傳按鈕就能上傳圖片了
一般情況下,我們應將用于顯示數(shù)據(jù)的東西才放到up中,如gridview等。并且盡量使用手動更新模式,這樣才能讓程序執(zhí)行起來順暢而高效,當然了,如果頁面很簡單的話就沒并要搞這么復雜,全部默認就行了。今天就到這,歡迎指正批評。
我也是看了《ASP.NET AjAX經(jīng)典范例168(附光盤V C# 版)章立民》這本書才知道這些的,這書非常不錯,建議大家買一本。
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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