2013-03-11 69 views
0

如何在方法運行時更新aspx頁面中的標籤?也許使用AJAX(更新面板)?方法運行時更新標籤

private void button_Click(object sender, EventArgs e) 
{ 
    doThings1(); 
    label.Text = "Status1"; 
    doThings2(); 
    label.Text = "Status2"; 
    doThings3(); 
    label.Text = "Done"; 
} 

我想一步一步展示。當doThings1()完成時,方法正在運行,顯示「Status1」,doThings2()完成,顯示「Status2」...這樣,標籤不顯示「Status1」和「Status2」,只是過程完成後,「完成」。我想一步一步展示。

+0

是啊,還是http://msdn.microsoft.com/sv-se/library/system.web.httpresponse.flush.aspx – 2013-03-11 15:16:34

+2

你在試着什麼?上面的代碼將顯示'DONE'。你想要某種進度條嗎? – 2013-03-11 15:20:23

+0

我認爲你應該使用客戶端視角。您可以使用Javascript和Ajax調用完成您的目標。如果這適合你,請告訴我,我爲你發佈一個例子。 – gustavodidomenico 2013-03-11 15:26:08

回答

0

規則是:1請求 - >一個響應。 不同的方法: 您可以使用3個asyncron javascript調用執行這些方法,並在成功回調中設置標籤的文本。

http://api.jquery.com/jQuery.ajax/

例子:

$.ajax({ 
    type: "POST", 
    url: "URL.asmx/doThings1", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(result) { 
      // result will be "done" from the function of webservice below. 
     // set the first label text 
    }, 
    error: function(xmlHttpRequest, status, err) { 
     alert(xmlHttpRequest.statusText + " " + xmlHttpRequest.status + " : " + xmlHttpRequest.responseText); 
    } 

}); 

重複這些電話3次,做不同的功能所做的修改。 你可以在客戶端使用jQuery或純JavaScript處理你的buttonclick。

您可以使用webservice或通用處理程序來執行服務器端方法。

How to create webservice

[WebMethod] 
    public string doThings1() 
    { 
     return "done"; 
    } 
+0

ajax調用只是謎題的一部分,您還需要讓服務器端代碼完成工作並公開某種可以使用ajax進行輪詢的Web服務或等效服務。 – Servy 2013-03-11 15:34:21

+0

我還沒有寫出完整的解決方案,只是方向。 – speti43 2013-03-11 15:36:15

+0

但是你甚至沒有描述剩下的工作要完成,而你只是展示/討論了較大目標的一小部分。我並不是說你應該爲整個事情展示完整的代碼,因爲它太簡單了,但是甚至沒有提到有很多服務器端的工作要做,這意味着答案也會丟失許多。 – Servy 2013-03-11 15:38:41

0

這聽起來像你想顯示一些任務在服務器上運行的進度。 signalr庫將允許您從服務器發送實時更新到客戶端。因此任何時候任務完成任務的階段(狀態1,狀態2等),它都會向具有新狀態的監聽客戶端發送更新。

您也可以每隔幾秒從服務器獲取一些javascript請求任務狀態並將其顯示給用戶。

+0

這樣的事情? doThings1(); RegisterStartupScript(「」,「」); doThings2();等等 – 2013-03-11 15:40:42

2

這不是一件容易的事,它是一個桌面應用程序的方式。您需要啓動異步操作,在請求結束後繼續執行,您需要讓客戶端不斷輪詢服務器以獲取進度更新,並且服務器端異步代碼需要更新某種共享狀態(即會話,數據庫,視圖狀態等)輪詢方法可以讀取進度。所有這些都非常低效(特別是如果你有很多用戶這樣做)並且需要一些時間來編寫。 Here是MSDN上的一個例子,它可以幫助您瞭解涉及的內容。