2010-09-08 152 views
0

有沒有辦法用ASP.net頁面(帶AJAX)來顯示一些繁忙的指示器(只是一個標籤很好),同時禁用某些按鈕(以防止雙擊),然後做工作。在工作結束時,標籤改變以指示新的狀態。ASP.NET忙碌指示器

當我試圖做這種方式:

Public Sub BtnEnvoyer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEnvoyer.Click 
    BtnEnvoyer.Enabled = False 
    LblStatus.Visible = True 
    LblStatus.ForeColor = Drawing.Color.ForestGreen 
    LblStatus.Text = "Envoi en cours..." 

    SendEmail() 

End Sub 

Private Sub EnvoyerCourriel() 
    ' Do some work 

    LblStatus.Text = "Done!" 
    BtnEnvoyer.Enabled = True 
End Sub 

我只看到了DN的結果,沒有在兩者之間。 我不介意使用JavaScript來使其工作,如果需要,或其他任何事情。

回答

1

我問了一個非常類似的問題在幾個星期前: ASP.NET Custom Button Control - How to Override OnClientClick But Preserve Existing Behaviour?

我創建的類可以放到任何形式將防止雙擊。

本質上,我將按鈕設置爲「禁用」,但沒有任何東西阻止您擴展以調用您自己的客戶端代碼。

你最好打賭是禁用按鈕(像我一樣),並且還顯示一個隱藏的DIV,其中包含一個動畫gif(AJAX加載圖像)。

1

您可能會發現在這個問題上有幫助的討論:

ASP.Net double-click problem

溶液(S)只處理按鈕,但你可以在想法擴展到禁止更多的DOM,並呈現出隱蔽div作爲客戶端點擊功能的一部分。

1

您應該可以使用一點jQuery來查找按鈕並將其禁用。當我在過去完成此操作時,我還將該按鈕的文本更改爲「請稍候...」。我連接按鈕的回發連接客戶端onclick。

它對我很好,因爲它停止了再次按下按鈕,還給了用戶即時的視覺反饋,他們已經成功地點擊了按鈕。

如果你需要一個例子,我相信我可以爲你挖掘一些代碼。

0

如果您希望在回髮結果返回之前更新頁面,則必須使用javascript,如下所示。這是一種通用的方法,您應該根據自己的需要進行定製。

在你的HTML:

<head> 
    <script type="text/javascript"> 
    function ShowWait() { 
     document.getElementById('labelspan').innerText = 'Loading...'; 
    } 
    </script> 
</head> 

在頁面設置:

BtnEnvoyer.OnClientClick = "ShowWait();"; 

然後單擊該按鈕時,ShowWait將適用於任何你想要的視覺效果,同時回傳實際處理。一旦準備就緒,整個頁面將被回發的結果替換。