I had a sitution to stream a file from SQL Server.
ASP.Net LinkButton was used in the ITemplate to use in GridView and Click event was defined with statements like
response.AddHeader("Content-Disposition", "attachment; filename=" + fileName );
response.AddHeader("Content-Length", blob.Length.ToString());
response.ContentType = "Application/x-msexcel";
response.BinaryWrite(blob);
Everything was working perfect in WebApplication. When the webpart was deployed to SharePoint, the server side click event fired only once. After that the link became irresponsive. If the page is refreshed, the link worked once again for 1st time.
After several googling, found that SharePoint stores time-stamp on client side for security reasons and avoids multiple post-backs for the same control.
There are 2 ways to over-come this issue. Just add an appropriate line as below
1. Generic way
imageButton.OnClientClick = "this.form.onsubmit = function() {return true;}";
or
hyperLink.OnClientClick = "this.form.onsubmit = function() {return true;}";
or
linkButton.OnClientClick = "document.getElementsByTagName(\'form\')[0].onsubmit = function() {return true;}";
2.Specific to SharePoint
linkButton.OnClientClick = "_spFormOnSubmitCalled = false;_spSuppressFormOnSubmitWrapper=true;";
After adding single line (one of the above), the webpart worked like a charm.
This blog is for development tips and tricks mainly on .NET and SharePoint development which could save time of someone like me.
Tuesday, 22 December 2009
LinkButton in SharePoint - Not firing Click Event
Subscribe to:
Post Comments (Atom)
3 comments:
Hi, could you give me a hint on where these lines of code should be placed ? Page_Load ? or ?
Thanks in advance
Thanks for this my friend. It took me two days to find a solution due to the fact that I needed to understand what the hell was going on.
you can also add following in your control.
<script> _spSuppressFormOnSubmitWrapper = true; </script>
Post a Comment