viernes, 19 de octubre de 2012

Abrir ventana emergente con javascript y ajax desde c#


     Anteriormente publique un articulo llamado Abrir popup con JavaScript donde se abre el popup utilizando javascript, con la función ya incrustada desde el lado del cliente. Existen otras formas de poder realizar esto, una es escribir el código directo en una variable y ejecutarlo con un response.write desde nuestra pagina aspx.cs o aspx.vb, dependiendo del lenguaje.
Pues bien ahora les traigo otra forma de lograrlo, dentro de una pagina que tiene controles Ajax, si han utilizado Ajax en sus paginas web, habrán notado que no se lleva muy bien con los scripts de javascript. Para ello existe una solución de realizar el cometido.
Una pagina que utiliza Ajax, necesita de un ScriptManager, esto nos impide ejecutar los códigos de Ajax, y si lo hacemos desde un response.write, se ejecuta la acción pero la pagina se desconfigura. Para ello existe la siguiente solución.
Dentro de la clase ScriptManager, viene un método llamado RegisterClientScriptBlock, con el cual podemos ejecutar nuestro window.open.
String Clientscript = "window.open(‘pagina.aspx')";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(),"newWindow", Clientscript, true);


Como podrán darse cuenta si han ejecutado un response.write con la función de abrir una ventana lleva antes del window.open la instrucción de que es script
 <script type="text/javascript"><script>, en este caso ya no lo lleva, ya que se especifica en el RegisterClientScriptBlock que es una nueva ventana con el texto "newWindow".
Con este sencillo comando se ejecuta nuestro script y no habrá problema con la pagina de que se llegue a cuatrapear.

Otra forma de abrir una nueva ventana, sin necesidad de utilizar el response.write y la página no tiene Ajax es con el ClientScript

String Clientscript = "<script>window.open('pagina.aspx"')</script>";
Me.ClientScript.RegisterStartupScript(this.GetType(), "WOpen", Clientscript,  true);

Se podrán dar cuenta que es similar pero aquí se ejecuta dentro del cliente, y es el mismo efecto, no afecta para nada la pagina, como lo aria un response.write y la instrucción es diferente al abrir la ventana en vez de "newWindow" ahora es "WOpen"


Sin mas por el momento espero les halla sigo util, ya saben si tienen dudas o comentarios no duden en publicarlo.


Saludos cordiales!

No hay comentarios:

Publicar un comentario