18 votos

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

Tengo una vista de cuadrícula en mi página y quiero exportar a la Hoja de Excel, A continuación está el código que yo había escrito para realizar esta tarea, aquí ya estoy pasando el conjunto de datos para el método de enlazar la red y btnExcelExport es el botón que va a exportar el Contenido de la Cuadrícula en 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 yo m depuración he encontrado que la malla está encuadernada correctamente pero al intentar exportar a Excel , estoy recibiendo este error:

"Error de tiempo de ejecución de Microsoft JScript: Sys.WebForms.PageRequestManagerParserErrorException: El mensaje recibido desde el servidor no se pudo analizar."

58voto

He arreglado este problema. Como estoy usando UpdatePanel, he añadido a continuación el código en la Page_Load de eventos de la página y a mí me funcionó:

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

3voto

Marcelo Luz Puntos 41

En mi caso, el problema fue causado por alguna Respuesta.Escribir los comandos en la Página principal del sitio web (el código). Que estaba allí sólo para propósitos de depuración (que no es la mejor manera, lo sé)... :)

2voto

Krishna Tiwari Puntos 31
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.lblbtndoc1);

0voto

Tuve el mismo error, he intentado <asp:PostBackTrigger ControlID="xyz"/> en lugar de AsyncPostBackTrigger .Esto funcionó para mí. Es porque no queremos una devolución parcial.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: