I have a grid view on my page and I want to export it to the Excel Sheet, Below is the code I had written to do this task, here I am already passing the dataset to the method to bind the grid and btnExcelExport
is the button which will export the Grid Content in to Excel Sheet :-
private void BindGridView(DataSet ds) { if (ds.Tables.Count > 0) { if (ds.Tables[0].Rows.Count > 0) { GVUserReport.DataSource = ds; GVUserReport.DataBind(); btnExcelExport.Visible = true; } } } protected void btnExcelExport_Click(object sender, EventArgs e) { Response.Clear(); Response.AddHeader("content-disposition","attachment;filename=FileName.xls"); Response.Charset = ""; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = "application/vnd.xls"; System.IO.StringWriter stringWrite = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); GVUserReport.RenderControl(htmlWrite); Response.Write(stringWrite.ToString()); Response.End(); } public override void VerifyRenderingInServerForm(Control control) { return; }
Now when I am debugging I found that the grid is binded sucessfully but when trying to export it to Excel, I'm getting this error:
"Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed."
I fixed this issue. As I'm using UpdatePanel
, I added below code in the Page_Load
event of the page and it worked for me:
protected void Page_Load(object sender, EventArgs e) { ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(this.btnExcelExport); //Further code goes here.... }
In my case, the problem was caused by some Response.Write commands at Master Page of the website (code behind). They were there only for debugging purposes (that's not the best way, I know)...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With