lunes, 19 de julio de 2010

Abrir una nueva ventana desde un botón dentro de Ajax (updatePanel)

Escenario:

“Teniendo un ImageButton dentro de un UpdatePanel, y queriendo abrir una nueva ventana una vez pulsado el mismo:
1. Cómo evitar el 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 ”.

2. Cómo pasarle parámetros por el querystring.”

Primero y único, en el método onclick del botón se le da de alta el script que ha de lanzarse por medio de la clase de sistema ScriptManager.

protected void imgbCarpetilla_Click(object sender, EventArgs e)
{
string scriptStr = "window.open('informes/Target.aspx?valor=" + valor.ToString() + "');";
ScriptManager.RegisterStartupScript(((Control)sender), typeof(string), "", scriptStr, true);
}


De aquí solamente señalar que el true al final lo que hace es poner “<script>” delante y detrás de nuestro script.



Y con esto podemos olvidar nuestro socorrido Response.Write();

1 comentario:

Álvaro León dijo...

Hola que tal!

Excelente tu publicación! me sirvió de mucho! es una pena que los exploradores detecten esta acción como una ventana emergente y algunos navegadores como el google chrome las bloquee desde el principio, para algunos usuarios que no están familiarizados con los popus podría ser causa de suicidio (:P weno exagere xD)
Saludos!!! reitero, excelente publicación
Nota: Sí logro encontrar como evitar que lo reconozca como ventana emergente te lo are saber!