Skip to main content

Prevent multiple postbacks in SharePoint 2013


The scenario:  Disabled the button after user’s click event. Prevent user from clicking it several times.

The problem: If the button is disabled, the server side event handler is not fired.

The solution: Set the property UseSubmitBehavior to false.

Explanations

Here is the working code of how to have disabled button after it is clicked:


<asp:Button ID="Button1" runat="server" Text="Do Postback" UseSubmitBehavior="false"  OnClick="Button1_Click" OnClientClick="Validate(this)"  />


       function Validate(thisObj)
       {
           thisObj.disabled = true;
           return true;
       }


If you don't set the property UseSubmitBehavior your code in the handler Button1_Click won’t fire. I spend several hours in debugging it. Hope this save time to somebody.




Comments

Popular posts from this blog

ClientPeoplePicker in SharePoint 2013

Start using SharePoint 2013 I noticed that the way for selecting people or groups is changed. The new way is simple – just ‘Enter name or email address’ without any icons for ‘Check Names’ or ‘Browse’. I guess that the PeoplePicker is changed but NO. PeoplePicker sitll has the same functionality as before. There is a new control called ClientPeoplePicker . How to use it: 1. Add this references <% @ Register TagPrefix ="wssawc" Namespace ="Microsoft.SharePoint.WebControls" Assembly ="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 2. Add the following control declaration       < wssawc : ClientPeoplePicker          Required ="true"          ValidationEnabled ="true"          ID ="peoplePicker"          runat ="server"          InitialHelpText =" <% $Resources:wss,aclinv_PickerIntialHelperText %> "          VisibleSu

Error: A duplicate field name "xxxx" was found

Soon I have some experience with migrating solution from SharePoint 2010 to SharePoint 2013. The migration was on 3 steps. First one was just to copy the custom fields, content types and list definitions from the old VS 2010 project into a new VS 2012 project for SharePoint 2013. Looks like pretty simple task but ….. The problem:  Error “ A duplicate field name "xxxx" was found ” when the feature for provisioning the fields and content types is activated. The solution: Review the field definitions and make sure no field has Name property equal to some of the ‘reserved’ values. Explanations: In SharePoint 2010 there was no problem to have these fields as a definition of custom fields: < Field     Type = " Note "     ID = " {893FB9BC-2DA4-4451-A1D1-88010CDC6A08} "     Name = " Description "     StaticName = " Description "     DisplayName = " Description 1 "     Required = " FALSE "     MaxL

SharePoint and List Joins with CAML

This came to me as an issue when I started migrating one project from SharePoint 2010 to SharePoint 2013. The code uses LINQ to SharePoint and it was not written in a clever way. We decide to use CAML queries and optimize the code. The scenario: Create gridview that gathers information from three(or more) lists. The problem: How to create the CAML query joins and projected fields correctly. Explanation : Option 1: Get generated CAML query from LINQ to SharePoint code This doesn’t work. I wrote the LINQ to SharePoint code connected the three lists. When I executed the code the following error was thrown – “ The query uses unsupported elements, such as references to more than one list, or the projection of a complete entity by using EntityRef/EntitySet. ” Here is some explanation about it and why this can’t be used. Option 2: Write the query yourself I found this article in MSDN . Read it ! The second part in it is exactly my scenario. But it takes me a lot of time to un