當頁面有部分內容需刷新,很適合使用UpdataPanel操作,當發生doPostBack時,只會更新UpdatePanel內容。

下面兩張圖可以看出在沒有updatepanel的情況下, 頁面刷新後, 兩個控制項都取得指定的值。

image

執行前

image

執行後

 

1.建立控制項UpdataPanel與ScriptManaget

image

 

2.在updatepanel內新增Triggers, 新增要執行postback的按鈕.

image

執行後,只有updatepanel的內容被更新。

image

 

 

當我們有兩個顯示區塊,一個顯示統計圖表,另一個顯示明細表,因明細資料較多,當執行頁面切換會觸發postback,此時統計圖表的區塊也會跟著更新。

若要避免這樣的狀況,可以將第一個區塊的UpdateMode設為Conditional,這樣就不會因為第二個區塊發生postback而刷新。

 

後來又有一個問題,在初次載入時,第一個區塊透過ajax呼叫後台取得資料,由於執行順序的關係,後台未處理完原本的程序就發生執行WebMethod的程序,導致回傳的資料為空值。

因此需在前台增加判斷式,確認postback執行完成才透過ajax呼叫後台,如同onload事件。

 

<script type="text/javascript" language="javascript">
         Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
         Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
         var elemId;
         function BeginRequestHandler(sender, args){
                     elemId = args.get_postBackElement();
         }
         function EndRequestHandler(sender, args){
                    if(elemId =='btnQuery'){
                      //program  
         }
</script>

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 門外漢 的頭像
    門外漢

    門外漢的筆記

    門外漢 發表在 痞客邦 留言(0) 人氣()