martes, 4 de agosto de 2009

Javascript desde C#

Hace poco necesitaba abrir una ventana emergente luego de dar clic en botón en una página aspx, he inmediatamente después re-direccionar la pantalla "padre" a otra dirección. Para cumplir estos objetivos se me ocurrió registrar un script en el evento del botón (obviamente después de ejecutar/procesar lo que tenía que hacer del lado del servidor) lo cual me quedó mas o menos así:

...

    StringBuilder script = new StringBuilder();
    script.Append(" < script language= ");
    script.Append(Convert.ToChar(34));
    script.Append("javascript");
    script.Append(Convert.ToChar(34));
    script.Append("> ");
    script.Append("window.open(");
    script.Append(Convert.ToChar(34));
    script.Append("PaginaPopup.aspx?Parametro1=");
    script.Append(intParametro1.ToShortDateString());
    script.Append("&Parametro2=");
    script.Append(intParametro2.ToString());  
    script.Append(Convert.ToChar(34));
    script.Append(",");
    script.Append(Convert.ToChar(34));
    script.Append(Convert.ToChar(34));
    script.Append(",");
    script.Append(Convert.ToChar(34));
    script.Append("Width: 400px; Height: 250px; scroll: no; status:yes;");
    script.Append(Convert.ToChar(34));
    script.Append(");");
    script.Append(" window.location=");
    script.Append(Convert.ToChar(34));
    script.Append("PaginaRedireccionar.aspx");
    script.Append(Convert.ToChar(34));
    script.Append(";");        
    script.Append(" < / script >");
        
    ClientScript.RegisterClientScriptBlock(this.GetType(), "popup", 
script.ToString());

...


En este ejemplo usé un StringBuilder para ir creando el script; se utiliza un window.open para abrir la página PaginaPopup.aspx con dos parámetros (Parametro1 y Parametro2) y especificamos las características de la ventana a abrir. Seguidamente usamos window.location para re-direccionar la ventana "padre" a la página PaginaRedireccionar.aspx

finalmente registramos este script por medio del metodo ClientScript.RegisterClientScriptBlock y misión cumplida!

0 comentarios: