Discussion:
window.onload y eventos del UpdatePanel
(demasiado antiguo para responder)
Leonardo
2007-04-21 11:39:06 UTC
Permalink
Hola !

Tengo un sitio web anteriormente desarrollado por mí pero sin usar Atlas.
Casi todos los web forms tienen tres botones Aceptar, Aplicar o Cerrar.

Cuando uno aprieta Aceptar el web form hace lo siguiente ( la idea es que
graba los datos y cierra la página):

protected void btnSave_ServerClick(object sender, System.EventArgs e)
{
if (Save()) // save es mi función para guardar todos los datos
{
string strScript = @"<SCRIPT language=javascript>window.onload =
function() { window.close(); };</SCRIPT>";
Page.RegisterClientScriptBlock("CloseWindow", strScript);
}
}

Como les decía sin Atlas funcionaba perfecto pero desde que agregué
EnablePartialRendering=true no funcionó más porque según entiendo no se está
ejecutando el window.onload.

Y la pregunta sería cual evento me conviene redefinir (o de que otra forma
puedo hacer esto mismo con Atlas) ? Vi en la documentación que existe el
evento pageLoad pero no se me dispara tampoco cuando se produce la respuesta
al asyncPostback...

Gracias!
Jose A. Fernandez
2007-04-25 12:47:49 UTC
Permalink
Hola Leonardo
Como sabras cuando usas Update Panel del ASP.NET Ajax (antes se
llamaba Atlas) se renderiza parte de la pagina y no toda o sea con
metodos javascript se cambia el contenido de alguno contenedor, por
eso es que no realiza postback o por lo menos no un postback que
refrezca toda la pagina
Ahora buien si no refrezca toda la pagina nunca se ejecutara
nuevamente window.onload (salvo la primera vez que cargues la pagina,
pero alli no tienes todavia el codigo javascript que lanza el cerrar
la pagina)
Como podrias solucionar, llamar directamente al window.close
Algo asi:
string strScript = @"<SCRIPT language=javascript>window.close();</
SCRIPT>";
Page.RegisterClientScriptBlock("CloseWindow", strScript);

Acuerdate tambien que si la ventana actual no se abrio mediante
javascript al cliente (visitante) se le mostrara una ventana de alerta
que la ventnaa se va a cerrar
Espero que te sirva de ayuda o guia

________________________
Jose A. Fernandez
Post by Leonardo
Hola !
Tengo un sitio web anteriormente desarrollado por mí pero sin usar Atlas.
Casi todos los web forms tienen tres botones Aceptar, Aplicar o Cerrar.
Cuando uno aprieta Aceptar el web form hace lo siguiente ( la idea es que
protected void btnSave_ServerClick(object sender, System.EventArgs e)
{
if (Save()) // save es mi función para guardar todos los datos
{
function() { window.close(); };</SCRIPT>";
Page.RegisterClientScriptBlock("CloseWindow", strScript);
}
}
Como les decía sin Atlas funcionaba perfecto pero desde que agregué
EnablePartialRendering=true no funcionó más porque según entiendo no se está
ejecutando el window.onload.
Y la pregunta sería cual evento me conviene redefinir (o de que otra forma
puedo hacer esto mismo con Atlas) ? Vi en la documentación que existe el
evento pageLoad pero no se me dispara tampoco cuando se produce la respuesta
al asyncPostback...
Gracias!
Leonardo
2007-04-30 12:21:26 UTC
Permalink
Gracias por tu respuesta José.
Voy a intentar implementar tu propuesta a ver si logro solucionarlo !



"Jose A. Fernandez" <***@gmail.com> escribi� en el mensaje news:***@t38g2000prd.googlegroups.com...
Hola Leonardo
Como sabras cuando usas Update Panel del ASP.NET Ajax (antes se
llamaba Atlas) se renderiza parte de la pagina y no toda o sea con
metodos javascript se cambia el contenido de alguno contenedor, por
eso es que no realiza postback o por lo menos no un postback que
refrezca toda la pagina
Ahora buien si no refrezca toda la pagina nunca se ejecutara
nuevamente window.onload (salvo la primera vez que cargues la pagina,
pero alli no tienes todavia el codigo javascript que lanza el cerrar
la pagina)
Como podrias solucionar, llamar directamente al window.close
Algo asi:
string strScript = @"<SCRIPT language=javascript>window.close();</
SCRIPT>";
Page.RegisterClientScriptBlock("CloseWindow", strScript);

Acuerdate tambien que si la ventana actual no se abrio mediante
javascript al cliente (visitante) se le mostrara una ventana de alerta
que la ventnaa se va a cerrar
Espero que te sirva de ayuda o guia

________________________
Jose A. Fernandez
Post by Leonardo
Hola !
Tengo un sitio web anteriormente desarrollado por mí pero sin usar Atlas.
Casi todos los web forms tienen tres botones Aceptar, Aplicar o Cerrar.
Cuando uno aprieta Aceptar el web form hace lo siguiente ( la idea es que
protected void btnSave_ServerClick(object sender, System.EventArgs e)
{
if (Save()) // save es mi función para guardar todos los datos
{
function() { window.close(); };</SCRIPT>";
Page.RegisterClientScriptBlock("CloseWindow", strScript);
}
}
Como les decía sin Atlas funcionaba perfecto pero desde que agregué
EnablePartialRendering=true no funcionó más porque según entiendo no se está
ejecutando el window.onload.
Y la pregunta sería cual evento me conviene redefinir (o de que otra forma
puedo hacer esto mismo con Atlas) ? Vi en la documentación que existe el
evento pageLoad pero no se me dispara tampoco cuando se produce la respuesta
al asyncPostback...
Gracias!
Loading...