c#
  • asp.net
  • 2011-01-19 141 views 0 likes 
    0

    我正在使用ASP .Net。我需要能夠點擊一個按鈕,禁用它,讓代碼在後面執行一些功能,一旦完成,再次啓用按鈕。因爲我們使用的是UpdatePanel,所以在這個項目中沒有回發的地方。關於據我已經能夠成功地得到使用此語法來禁用它背後的Page_Load函數的代碼:禁用/啓用按鈕

    btnConnect.Attributes.Add("onClick", "document.body.style.cursor = 'wait';this.disabled = true;" + ClientScript.GetPostBackEventReference(btnConnect, string.Empty) + ";"); 
    

    這將禁用按鈕,可以讓後面的代碼執行。我只是想不出如何在代碼後面運行的函數完成後重新啓用按鈕。有什麼方法可以在代碼完成後捕獲?

    +0

    UpdatePanel中的按鈕也是如此嗎?然後當異步回發返回時它應該被重寫。 (這只是一個假設,這就是爲什麼我把它寫成評論而不是答案。) – Heinzi 2011-01-19 23:06:56

    回答

    0

    您可以禁用後使用超時的方法:

    var that = this; //pointer to button 
    window.setTimeout(function() { document.body.style.cursor = '';that.disabled = false; }, 1000); 
    

    這種方法可能是有用的,以防止雙回送過。

    或者更新面板結束它將觸發Sys.WebForms.PageRequestManager.endRequest事件。添加一個事件處理程序來重新啓用那裏的按鈕作爲另一種選擇。

    1

    你能夠使用jQuery嗎?考慮這樣一個流程:

    • 上點擊,禁用按鈕
    • 呼叫/ POST到ASP.NET URL根據需要
    • 重新啓用該按鈕的URL調用返回時。根據需要更新頁面元素,重定向,警報。
    0

    除了上面......

    是的,你正在使用一個UpdatePanel,但回發發生。因此,在您的提交按鈕事件中,成功處理完成後,刪除上面添加的onClick屬性,您是否嘗試啓用後面代碼中的按鈕,然後在您的UpdatePanel上發出Update()?

    相關問題