domingo, 28 de febrero de 2010

Asp.Net: Otro ejemplo para inyectar javascript.

Dim script As String = "function Update_Bitacora()
{Scroll_Pais();__doPostBack('ctl00$ContentPlaceHolder1$gridBitacora','Modificar$0')}"
ClientScript.RegisterStartupScript(Me.GetType(), "UpdatePanel2", script, True)

El botón está oculto en la página y una ventana que se abre con window.open tiene un botón que llama a la función Update_Paises de la forma: window.opener.Update_Bitacora.

La sub-ventana tiene un botón "Modificar", éste realiza una operación sobre una base de datos. Una vez realizada dicha operación inyecta código javascript el cual se encarga de llamar a la función Update_Bitacora() y además despues de actualizar la bitácora, se cierra a si misma. La bitácora es un listado que está en la ventana padre.

Un punto importante es enviar el parámetro 'Modificar$0' ya que de lo contrario el evento RowCommand del GridView, no se ejecutará de ninguna manera. No es estricto enviar $0 y además se puede personalizar en caso de que se ocupe enviar otro argumento en vez de un cero.

Otra alternativa es poner un botón oculto y crear un procedimeinto con el siguiente código:

Dim btnControl As New PostBackOptions(btn)
Page.ClientScript.RegisterForEventValidation(btnControl)
Dim script As String = Page.ClientScript.GetPostBackEventReference(btnControl)
ClientScript.RegisterStartupScript(Me.GetType(), "UpdatePanel1", "function Update_Bitacora(){script}", True)

Posteriorente en la ventana hija se llama a la función que inserta el código anterior.

Referencias: aspadvice.com

No hay comentarios: