There are three solutions for export to work within an update panel; it’s depending upon your case which solution to be followed.
1)
Remove UpdatePanel tagThe first solution is to simply remove the updatePanel tag but still there is a question that if you want to remove update panel tag then what are you doing here :) So to better understand let’s consider you have an asp button and you want to export the gridview data by clicking on it, so if you want to successfully export the data please close the UpdatePanel tag before the asp button and then again after asp button please insert the updatePanel and then close UpdatePanel in the end of the page.
2)
Use PostBackTriggerThe second solution is to use PostBackTrigger before closing tag of
</asp:UpdatePanel> and give asp button’s(That you want to use to export gridview data to excel) ID to the
ControlID of
asp:PostBackTrigger like this
………………………………………………………………
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
The whole aspx code will come here
<asp:Button ID="btn_export" runat="server" Text="Export to excel" onclick="btn_export_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btn_export" />
</Triggers>
</asp:UpdatePanel>……………………………………………………………
It will work and you will achieve what you want but there is a case scenario that I had, please have a look over below image
Yeah in this case there is a dropdown list and I wanted this dropdown list to export the data but this dropdown list made me mad as every time it gives me error. First of all I attached the export to excel code to the OnSelectedIndexChanged event of asp dropdown list but I got this error
Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near '<style> .text { mso-'
Then I again put the code of exporting gridview data to the asp button’s onClick event and tried to call the onClick event of asp button over OnSelectedIndexChanged event of asp dropdown list but I got this same error
Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near '<style> .text { mso-'.
Then I tried to give the asp dropdown list’s ID to the ControlID of <asp:PostBackTrigger> but I got this error
A control with ID 'ddl_ExportGrid' could not be found for the trigger in UpdatePanel 'UpdatePanel1'.
I tried a lot to solve this error by providing lot of options to the ControlID of <asp:PostBackTrigger> such as
<asp:PostBackTrigger ControlID="UpdatePanel1:ddl_ExportGrid" />
<asp:PostBackTrigger ControlID="GridView1:ddl_ExportGrid" />
But still got “could not be found for the trigger” error.
Then I found a solution and its work 100%. The solution is to call a javascript function over client side
onChange event of asp dropdown list and that's it. Please have a look over javascript function that you will call over onChange event of asp dropdown list.
function ExportGridviewtoExcel()
{
__doPostBack("<%=btn_export.UniqueID %>",'');
}
Note:- Before doPostBack() function there are two underscores(_)
I am using doPostBack built-in javascript function and in this function I am providing the
asp button’s ID as a first argument to it. Now the code for asp dropdown list will be like this
<asp:DropDownList ID="ddl_ExportGrid" runat="server" style="vertical-align:middle;" onchange="ExportGridviewtoExcel();">
<asp:ListItem Value="0" Text="Select a format" />
<asp:ListItem Value="1" Text="Export to Excel" />
</asp:DropDownList> Export
Also please make the asp button invisible so that user can’t see it but please don’t remove it as the export gridview to excel code is written on
asp button’s onClick() event and by using javascript function over
onChange event of asp dropdown list actually we are calling this asp button. So in the end the code will be
……………………………………………………………………………………
<asp:Button ID="btn_export" runat="server" Text="Export to excel" onclick="btn_export_Click" Visible="false" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btn_export" />
</Triggers>
</asp:UpdatePanel>……………………………………………………………………………………
I try my level best to explain how to export gridview data to excel within an UpdatePanel and I hope these solutions will work for you.
Happy Coding…… Keep Coding….!