簡體   English   中英

單擊后如何禁用ASP.NET WebForms按鈕,並在回發完成后再次啟用它?

[英]How would one disable an ASP.NET WebForms button when its clicked, and have it be enabled again after postback completes?

我想做的就是能夠在按下按鈕后立即將其禁用,執行操作並重新啟用該按鈕。 看起來很簡單,但我的按鈕在需要時不會更新。 我嘗試了更新面板,但是不確定是否使用正確。 難道我做錯了什么? 還是有更好的方法來實現這一目標?

的HTML

<asp:UpdatePanel runat="server" ID="updateSubmitButton">
    <ContentTemplate>
        <a href="#resultsSet"><asp:Button ID="btnSearch" CssClass="CrossoverButton" runat="server" Text="Search" OnClick="btnSearch_Click" /></a>
    </ContentTemplate>
</asp:UpdatePanel>

C#

protected void btnSearch_Click(object sender, EventArgs e)
{
    btnSearch.Enabled = false;
    updateContent();

    // Do a lengthy operation here.

    btnSearch.Enabled = true;
}

您將需要使用客戶端技術來禁用該按鈕。 這是因為,當您單擊按鈕時,頁面會向其自身回發信息,告訴服務器執行btnSearch_Click 根據您的代碼,這將

  1. 禁用按鈕
  2. 更新內容
  3. 重新啟用按鈕

所有這些都發生在服務器上。 僅在方法執行完畢后,它才會將上下文返回到頁面。

為了禁用點擊按鈕,您需要嘗試以下操作:

<asp:Button ID="btnSearch" CssClass="CrossoverButton" runat="server" Text="Search"
    OnClientClick="this.disabled = true;"
    UseSubmitBehavior="false" />
  OnClientClick="this.disabled = true;" 

該行注冊了客戶端單擊處理程序,以禁用自身。

  UseSubmitBehavior="false" 

該行告訴ASP.NET在表單post中包含禁用的元素,因此服務器知道哪個控件注冊了postback。

另請參閱-https: //stackoverflow.com/a/11832053/86860

btnSearch_Click中的所有操作將在服務器上執行。 在整個頁面生命周期結束之前,不會呈現頁面。

如果要禁用該按鈕,則應使用javascript來執行此操作,然后僅在禁用該按鈕后才能回發到頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM