|
 |
aspx_espanol thread: Evento Unload2
Message #1 by "Jayson Quintero" <jabord@h...> on Sat, 16 Feb 2002 17:56:41
|
|
Hola a todos los desarrolladores de asp.net
Hace algunos dias hice una pregunta, y ahora la repito a ver si alguien
puede darme una mano.
Tengo unos WebForms de mantenimiento, con algunos textbox de entrada de
datos. cuando el usuario antra a algunas de ellas, la guardo como visitada
en un menu (esto es como el menu ventana de microsoft).
Para esto yo guardo la informacion del webform visitado en un dataset,
para cuando el usuario desida volver a este webform este la información
intacta tal cual la dejo.
Mi pregunta es, que evento se ejecuta al navegar de una pagina a otra,
pues es el momento exacto para guardar la información. Yo pensaba que es
el Unload, pero parece que este se ejecuta al principio. Si me equivoco
podes decirme el comportamiento de los eventos que se ejecutan al cerrar
una pagina e ir a otra.
Gracias de antemano.
Message #2 by "Andrew Wrigley" <awrigley@y...> on Sat, 16 Feb 2002 19:16:05
|
|
> Hola a todos los desarrolladores de asp.net
>
> Hace algunos dias hice una pregunta, y ahora la repito a ver si
alguien
> puede darme una mano.
>
> Tengo unos WebForms de mantenimiento, con algunos textbox de entrada
de
> datos. cuando el usuario antra a algunas de ellas, la guardo como
visitada
> en un menu (esto es como el menu ventana de microsoft).
>
> Para esto yo guardo la informacion del webform visitado en un dataset,
> para cuando el usuario desida volver a este webform este la información
> intacta tal cual la dejo.
>
> Mi pregunta es, que evento se ejecuta al navegar de una pagina a otra,
> pues es el momento exacto para guardar la información. Yo pensaba que
es
> el Unload, pero parece que este se ejecuta al principio. Si me equivoco
> podes decirme el comportamiento de los eventos que se ejecutan al
cerrar
> una pagina e ir a otra.
>
> Gracias de antemano.
Message #3 by "Andrew Wrigley" <awrigley@y...> on Sat, 16 Feb 2002 19:28:01
|
|
Disculpame el post vacio.
El evento unload se dispara cuando asp.net termina de procesar un page
object (una pagina) y antes de enviar el html resultante al cliente. Por
eso te da la impresion de que el evento se dispara 'al principio'...
Dicho de otra manera, el evento unload se dispara al final del
procesamiento que asp.net hace de un request una pagina asp.net. No
confundas un unload de asp.net (en el servidor) con un unload de una
pagina en un browser cliente.
Lo que queres es un evento que se dispara cuando requeris otra pagina de
tu aplicacion. Como se refiere a la sesion de tu usuario, debe ser un
evento de Sesion, que tal vez podes en el global.asax...
O sea, cuando requeris una pagina de tu aplicacion, el servidor se va a
fijar en los eventos que tenes definidos en el global.asax. Por alli va
la cosa.
Me parece que tenes que estudiar un poquito. Te sugiero que aclares
conceptos referentes al procesamiento de un request por asp.net, el orden
y el momento en que se disparan los distintos eventos y conceptos
referentes a las aplicaciones web.
Si nadie te contesto es porque en la lista se supone que los usuarios se
tomaron algun trabajo para entender los conceptos basicos. Yo te
contesto esta vez porque he sufrido lo tuyo en carne propia y porque a mi
me han tenido paciencia.
Suerte y a estudiar un cacho.
Andres Wrigley
Message #4 by "jayson osvaldo" <jabord@h...> on Sat, 16 Feb 2002 15:28:06 -0500
|
|
Hola Andrew, Gracias por tu explicación. Veo que hay cosas que tengo que
aprender, sobre esto. Realmente soy novato, pero espero rapidamente aprender
mucho más.
Con respecto a los eventos en el global.asax. lo que deseo es colocar el
codigo en alguno de esos eventos, que guarde la informacion que hay en los
textbox en un dataset.
Y realmente no veo como?
Si tienes una idea me informas por favor.
Saludos
>El evento unload se dispara cuando asp.net termina de procesar un page
>object (una pagina) y antes de enviar el html resultante al cliente. Por
>eso te da la impresion de que el evento se dispara 'al principio'...
>
>Dicho de otra manera, el evento unload se dispara al final del
>procesamiento que asp.net hace de un request una pagina asp.net. No
>confundas un unload de asp.net (en el servidor) con un unload de una
>pagina en un browser cliente.
>
>Lo que queres es un evento que se dispara cuando requeris otra pagina de
>tu aplicacion. Como se refiere a la sesion de tu usuario, debe ser un
>evento de Sesion, que tal vez podes en el global.asax...
>
>O sea, cuando requeris una pagina de tu aplicacion, el servidor se va a
>fijar en los eventos que tenes definidos en el global.asax. Por alli va
>la cosa.
>
>Me parece que tenes que estudiar un poquito. Te sugiero que aclares
>conceptos referentes al procesamiento de un request por asp.net, el orden
>y el momento en que se disparan los distintos eventos y conceptos
>referentes a las aplicaciones web.
>
>Si nadie te contesto es porque en la lista se supone que los usuarios se
>tomaron algun trabajo para entender los conceptos basicos. Yo te
>contesto esta vez porque he sufrido lo tuyo en carne propia y porque a mi
>me han tenido paciencia.
>
>Suerte y a estudiar un cacho.
>
>Andres Wrigley
>---
>Usted está suscrito a aspx_espanol como:
>jabord@h...
>Para darse de baja, envíe un mensaje en blanco a
>$subst('Email.Unsub')
>
>$subst('Email.Unsub').
VisualStudio.Net lo mejor del Web
_________________________________________________________________
Join the world?s largest e-mail service with MSN Hotmail.
http://www.hotmail.com
Message #5 by "Andrew Wrigley" <awrigley@y...> on Sun, 17 Feb 2002 10:20:31
|
|
Jayson
> Para esto yo guardo la informacion del webform visitado en un dataset,
> para cuando el usuario desida volver a este webform este la información
> intacta tal cual la dejo.
Tenes que usar una variable de sesion para guardar la info que el usuario
imputa. No me parece que tiene que ser un dataset (mucha memoria, para
que matar mosquitos con caniones?) salvo que cada usuario haya modificado
un db (????). Mejor un array con el estado de los text box imputados por
el usuario.
Despues usas el Page_Load event. O sea, si no es un post back, tu event
handler se fija en tu variable de sesion, y pone lo que encuentra en los
respectivos text box o lo que sea.
Para que esto funcione, tenes que manejar la sesion, ya sea con cookies,
o lo que sea.
Cualquier otro metodo va a aplicarse a TODOS los usuarios de tu app.
Creo que no queres esto.
> Mi pregunta es, que evento se ejecuta al navegar de una pagina a otra,
> pues es el momento exacto para guardar la información. Yo pensaba que
es
> el Unload, pero parece que este se ejecuta al principio. Si me equivoco
> podes decirme el comportamiento de los eventos que se ejecutan al
cerrar
> una pagina e ir a otra.
Aqui radica tu bache conceptual: El protocolo http es Stateless, o sea,
un servidor procesa un request, devuelve el html al usuario en el
response y SE OLVIDA.
El Servidor NO se queda esperando a que el usuario impute algo en su
browser para disparar algun evento. Una vez que el servidor despacho el
response, CIERRA la conexion y se queda esperando otro request para
procesar.
Esto implica que cuando el usuario decide (se escribe con c, desidia con
s es flojera, falta de ganas) ir a otra pagina NO hay evento alguno en el
servidor respecto a la pagina original, sino tan solo los eventos page
init y page load de la nueva pagina requerida. De alli que al volver a
la pagina original, el servidor no tiene manera de saber que imputo el
usuario, si no lo tiene guardado en alguna variable especifica al
usuario, o sea, una variable de sesion.
Lo que te confunde, es que con el post back asp.net 'aparenta' acordarse
de lo que el usuario imputo, pero esto es una mentira, ya que lo que el
servidor hace es empaquetar la info mandada en el request y devolverlo al
usuario encriptado en el hidden control que utiliza el post back.
Entonces, tu pregunta se reduce a:
Como hacer para meter la imputacion del usuario en tus variables de
sesion?
Si el request es un postback, es facil, porque en efecto la pagina
destino es la pagina origen. Dentro del page load, pones codigo que
carga los datos en la variable de sesion que corre cuando el request es
un postback.
Este metodo se te complica cuando la pagina destino es una pagina
distinta, y entonces es mejor un metodo generalizado para ambos casos.
Se me ocurre a la ligera que lo mejor es escribir un metodo que se llama
desde cualquier hyperlink control de tu pagina problematica que procesa
esa info y carga las variables de sesion. El metodo se llamaria desde
los event handler On Click de tus controles asp.net hyperlink.
Si queres que el usuario vuelva dos dias despues y se encuentra con la
misma info, entonces cargas tus variables de sesion en un db pero SOLO
cuando la sesion termina. O sea, procesas el paso de las variables de
sesion a la db en el evento Session On End en el global.asax.
> Gracias de antemano.
De nada, pero si lees ingles te recomiendo Beginning ASP.NET using C# (o
VB.NET, segun tu preferencia).
Realmente no tenes claro los conceptos basicos de:
1. El procesamiento de paginas por ASP.NET
2. el orden de disparo de los eventos
3. que el evento UnLoad se utiliza para la limpieza de recursos
utilizado en el procesameinto de la pagina (p ej, conexiones a bases de
datos, etc) y que este evento se dispara ANTES y siempre ANTES de que el
usuario reciba el Html enviado por el servidor tras cada request.
4. El concepto de sesion y las tecnicas de sesion management.
5. Postback.
6. El concepto de application
7. Como y cuando usar lo de arriba, en especial el global.asax.
8. No tenes claro lo que no tenes claro.
9. if(!englishSpoken)
{
Learn english;
Read lots of books on asp.net;
}
Ya que estas aprendiendo, te recomiendo C# antes que VB.
Suerte Andres
Message #6 by "Victor Garcia Aprea" <vga@o...> on Mon, 18 Feb 2002 00:52:46 -0300
|
|
> Lo que te confunde, es que con el post back asp.net 'aparenta' acordarse
> de lo que el usuario imputo, pero esto es una mentira, ya que lo que el
> servidor hace es empaquetar la info mandada en el request y devolverlo al
> usuario encriptado en el hidden control que utiliza el post back.
Ojo, el ViewState -por default- no esta encriptado, sino codificado con un
simple UUEncode64.
-Victor.
Message #7 by "Andrew Wrigley" <awrigley@y...> on Mon, 18 Feb 2002 09:46:04
|
|
Gracias Victor la correccion y la precision de tus posts. De paso, dije
muchas pavadas arriba o andamos por la buena senda?
Andres Wrigley
|
|
 |