Sys.WebForms.PageRequestManagerParserErrorException: el mensaje recibido del servidor no se pudo analizar

Tengo una vista de cuadrícula en mi página y quiero exportarla a la hoja de Excel. A continuación se muestra el código que escribí para hacer esta tarea, aquí ya estoy pasando el conjunto de datos al método para vincular la cuadrícula y btnExcelExport es el botón que exportará el contenido de la cuadrícula a la hoja de Excel: –

 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; } 

Ahora, cuando estoy depurando, descubrí que la cuadrícula está enlazada con éxito, pero cuando trato de exportarla a Excel, obtengo este error:

“Error de tiempo de ejecución de Microsoft JScript: Sys.WebForms.PageRequestManagerParserErrorException: el mensaje recibido del servidor no se pudo analizar”.

Solucioné este problema Como estoy usando UpdatePanel , agregué el código siguiente en el evento Page_Load de la página y funcionó para mí:

 protected void Page_Load(object sender, EventArgs e) { ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(this.btnExcelExport); //Further code goes here.... } 

En mi caso, el problema fue causado por algunos comandos Response.Write en la página maestra del sitio web (código detrás). Estaban allí solo con fines de depuración (esa no es la mejor manera, lo sé) …

1- Nunca use Response.Write.

2- Puse el código a continuación después de crear (no en Page_Load) un LinkButton (dinámicamente) y resolví mi problema:

 ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(lblbtndoc1); 

Para mis amigos de VB.Net –

 Dim scriptManager As ScriptManager = scriptManager.GetCurrent(Me.Page) scriptManager.RegisterPostBackControl(Me.YourButtonNameHere) 

Tuve el mismo error, luego probé lugar de AsyncPostBackTrigger . Esto funcionó para mí. Es porque no queremos una devolución de datos parcial.

Agréguele esto a PageLoad y resolverá su problema:

 ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(this.lblbtndoc1); 

Agregué el control a la etiqueta Triggers en el panel de actualización:

       

De esta forma, exportLinkButton activará UpdatePanel para que se actualice.
Más información aquí .

Esto funcionó para mí también, pero con una adición (abajo).

 protected void Page_Load(object sender, EventArgs e) { ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(this.btnExcelExport); //Further code goes here.... } 

Estaba registrando una secuencia de comandos en mi botón para hacer clic en otro botón una vez que el evento haya terminado de procesarse. Para que funcione, tuve que quitar el otro botón del Panel de actualización (por si acaso alguien enfrenta el mismo problema).