Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Preventing Multiple Button Clicks

0.00/5 (No votes)
28 Feb 2010 1  
This article will demonstrate a way to prevent multiple button clicks on ASP.NET Web Forms. Preventing multiple clicks can help prevent multiple

This articles was originally at wiki.asp.net but has now been given a new home on CodeProject. Editing rights for this article has been set at Bronze or above, so please go in and edit and update this article to keep it fresh and relevant.

This article will demonstrate a way to prevent multiple button clicks on ASP.NET Web Forms. Preventing multiple clicks can help prevent multiple server-side events from firing and thus reduces the chance of duplicate information being saved to the database.

Concept

  • Disable a button control on client side.
  • After performing some server-side tasks, enable the button from code-behind.

Please Note

In this example, you will need to be using an HTML button instead of ASP.net button.

Markup

<input type="button" id="SaveButton" value="Save" runat="server" onclick="this.disabled=true;" onserverclick="SaveButton_ServerClick" />

 

To Enable Client-Side Validation

If you want to enable client side validation along with the button click, the markup should be 'slightly' changed to.

<input type="button" id="SaveButton" value="Save" runat="server" onclick="if(Page_ClientValidate() == true){this.disabled=true;}" onserverclick="SaveButton_ServerClick" />       

 

Code-behind (Visual Basic)

    Protected Sub SaveButton_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs)

 

        Me.Validate()

 

        If Page.IsValid Then

            '****************************

            'Save information to database.

            '****************************

        End If

 

        If SaveButton.Disabled Then

            SaveButton.Disabled = False

        End If

    End Sub

 

Code-behind (CSharp)

protected void SaveButton_ServerClick(object sender, System.EventArgs e)

{

   

    this.Validate();

   

    if (Page.IsValid) {

    }

    //****************************

    //Save information to database.

    //****************************

   

    if (SaveButton.Disabled) {

        SaveButton.Disabled = false;

    }

}

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here