2009-10-01 151 views
1

我正在使用UpdatePanel,我想以編程方式在服務器端上刷新。原因是我展示一些數據,需要一個相當長的時間來加載,所以我需要在頁面中顯示和某種進步同時。UpdatePanel.Update(),似乎沒有發生

我所做的是下面的,有一個的UpdatePanel和一個ScriptManager的頁面上:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(scriptManager.IsInAsyncPostBack) 
     testLabel.Text = "AfterUpdate"; 
    else 
     jobsUpdatePanel.Update(); 
} 

這不希望我做的事:我想要顯示的頁面,立即觸發以加載數據在UpdatePanel的異步更新 - 這是我做的另一種分配傻文本testLabel代替。

這是在UpdatePanel的標記(離開ContentTemplete離開可讀性的原因):

<asp:UpdatePanel ID="jobsUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server"> 

沒有全部執行回發。任何人都可以給我提示我做錯了什麼嗎?

馬蒂亞斯

回答

2

不能從服務器到瀏覽器推送更新。什麼Update方法確實是包括在一個Ajax響應更新面板的內容,所以對於任何效果,必須有一個響應回到瀏覽器。

如果你想在服務器上運行一個漫長的過程並在瀏覽器中獲取更新,你必須在一個單獨的線程中啓動該過程,以便主線程可以完成並將響應返回給瀏覽器。然後,瀏覽器可以做回發或AJAX調用服務器並請求後臺線程的進展狀況。

+0

嗯,我已經想過渲染某些客戶端腳本,立即回發的方法 - 而不是在我自己的客戶端腳本搞亂,而不是真正推動更新。 :) – 2009-10-01 10:16:47

+0

我增加了一個按鈕,'顯示:無;'風格集並觸發其jQuery的單擊事件。 http://api.jquery.com/click/ – 2010-09-24 08:45:46