2011-06-15 52 views
1

我試圖一次加載頁面的某些部分,而不是在onLoad頁面事件中進行所有計算,然後一次顯示所有計算結果。有沒有辦法觸發一個沒有點擊事件的updatepanel?

我認爲模擬更快加載頁面的方法之一是將頁面的各個部分分隔成更新面板(如果我在這種方法中錯了,請糾正我)。因此,我想知道是否有辦法在onLoad事件中執行一些代碼,在頁面上顯示該代碼,然後繼續在updatepanel中執行一些其他工作並在完成時加載這些代碼。

回答

2

UpdatePanels是ajax的糟糕實現。由於只有頁面的一部分正在更新,因此認爲您減少了頁面的執行時間很容易(太簡單)。 UpdatePanel執行回發,並執行頁面的整個生命週期(蹩腳地說,它會爲您的頁面執行PageLoad,並且您的頁面上的每個用戶控件不僅僅是UpdatePanel中的那些控件)。除非您在代碼中放置了大量的if !Page.IsPostBack,否則實際上最終會放慢應用程序的運行速度。此外,由於它是回發,因此它會提交頁面上的runat ='server'表單,並將每個輸入(不僅僅是更新面板中的內容)提交給服務器,這意味着您不保存任何內容有效載荷和帶寬通過使用更新面板。

回答你的問題,但你只需要調用__doPostBack('updatepanel1','')。參考http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

+0

@AI hm am confused?我認爲updatepanel只應該爲updatepanel內的控件執行代碼? – locoboy 2011-06-15 21:28:25

+0

@ cfarm54這是UpdatePanels常見的誤解。暴露很容易。只需在PageLoad方法中添加一個斷點,並在UpdatePanel刷新時觀察它。 – 2011-06-15 21:37:25

+0

@AI有另外一種方法可以解決這個問題嗎?我寧願不要拖慢應用程序的運行速度。我知道updatepanels不會加快速度,它只是讓事情看起來更快,因爲它一次加載頁面的一部分。 – locoboy 2011-06-15 21:41:26

2

您可以調用UpdatePanel上的.Update方法。將UpdateMode設置爲Conditional,並在代碼中手動處理所有更新面板更新。

相關問題