I had this issue with sharepoint. I have a button on the page that sends a file and after clicking the button, the rest of the form was unresponsive. Turns out it is a sharepoint thing that sets the variable _spFormOnSubmitCalled to true to prevent any further submits. When we send a file this doesn't refresh the page so we need to manually set this variable back to false.
On your button in the webpart set the OnClientClick to a function in your javascript for the page.
<asp:Button ID="generateExcel" runat="server" Text="Export Excel"
OnClick="generateExcel_Click" CssClass="rptSubmitButton"
OnClientClick="javascript:setFormSubmitToFalse()" />
Then in the javascript I have this function.
function setFormSubmitToFalse() {
setTimeout(function () { _spFormOnSubmitCalled = false; }, 3000);
return true;
}
The 3 second pause I found was necessary because otherwise I was
setting the variable before sharepoint set it. This way I let
sharepoint set it normally then I set it back to false right after.in C#
SharePoint registers a JavaScript "on submit" handler. In this handler the global variable
_spFormOnSubmitCalled
is set to true
.
SharePoint uses this variable to check if a submit was executed and
prevents any further submits. Since your "download postback" does not
refresh the page this variable remains true
. With the effect that that all other buttons stop working.As a workaround you can set this variable to false in a client click handler on your download button:
Button btn = new Button();
btn.Text = "Download";
btn.Click += DownloadButton_Click;
// set the client click handler
btn.OnClientClick = "window.setTimeout(function() { _spFormOnSubmitCalled = false; }, 10);"
No comments:
Post a Comment