Foros del Web » Programando para Internet » ASPX (.net) »

Agregar evento cliente onload en un control ascx

Estas en el tema de Agregar evento cliente onload en un control ascx en el foro de ASPX (.net) en Foros del Web. Hola a tod@s! En un control de usuario "Cabecera.ascx" tengo la primera linea con la directiva <@Control...> Inmediatamente luego tengo esta linea: <script language="JavaScript" src="C_Cabecera.js"></script> ...
  #1 (permalink)  
Antiguo 03/09/2005, 06:27
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Agregar evento cliente onload en un control ascx

Hola a tod@s!
En un control de usuario "Cabecera.ascx" tengo la primera linea con la directiva <@Control...>
Inmediatamente luego tengo esta linea:
<script language="JavaScript" src="C_Cabecera.js"></script>

Y luego ya:
<TABLE....>
'Todo el codigo del control...
</TABLE>

Pues bien, llevo bastante rato peleandome para que al cargar el control ejecute una funcion de ese fichero JS.
He intentado esto en el Page_Load del Control:
Me.Attributes.Add("onload", "javascript:CargarCabecera();")

Tambien esto, en el propio fichero ascx:
<script language="JavaScript" src="C_Cabecera.js"></script>
<script>CargarCabecera();</script>
<TABLE....>

Pero ninguna me funciona. Se puede hacer lo que pretendo, en un control de usuario? Lo tenía hecho en cada página, en el evento onload del Body. Estoy intentando esto para no tener que ponerlo en el body de cada página, sino tenerlo en la cabecera una vez y punto. Es posible??

Muchas gracias!
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 03/09/2005, 09:11
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola de nuevo, recién me di cuenta que teniendolo de esta forma en el control ascx:

<script language="JavaScript" src="C_Cabecera.js"></script>
<script language="javascript">CargarCabecera();</script>

Llama bien a la funcion, lo que ocurre es que da error en esta linea de la funcion JavaScript:
document.getElementById("fecha").innerHTML = ...

Antes, cuando la funcion era llamada desde <BODY onload="CargarCabecera();">
Funcionaba correctamente el acceso al elemento mediante getElementById...

Puede ser que desde un control de usuario deba acceder de forma diferente al mismo elemento "fecha"?
O tal vez desde donde estoy llamando ahora a la funcion, todavia no están formados los elementos del documento...

Gracias por vuestra ayuda!
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 03/09/2005 a las 09:20
  #3 (permalink)  
Antiguo 03/09/2005, 09:21
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hola, el error que te manda al ejecutar "document.getElementById("fecha").innerHTML... " es porque el script se ejecuta antes de que la página se haya cargado completamente, lo que puedes hacer es lo siguiente:
Código:
<script type="text/javascript" src="C_Cabecera.js"></script>
<script type="text/javascript">
window.onload = function () {
  CargarCabecera();
}
</script>
Saludos
PS. Si no funciona, avisas, para hacerlo de otra forma...
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #4 (permalink)  
Antiguo 03/09/2005, 09:34
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Muy bueno xknown
Ha funcionado.
Mis respetos

Una cosita más ya que estamos.
Sabrías decirme si es posible por el otro camino? desde el servidor?

Algo así, en el Page_Load del Control:
Me.Attributes.Add("onload", "javascript:CargarCabecera();")

Gracias!
__________________
..:: moNTeZIon ::..
  #5 (permalink)  
Antiguo 03/09/2005, 10:28
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hasta donde tengo entendido no puedes hacer eso, pero no entiendo muy bien para que quieres hacer eso, si el script que puse es equivalente a hacer lo que mencionas, si en realidad quieres hacerlo desde el servidor entonces deberías usar Page.RegisterClientScriptBlock...

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #6 (permalink)  
Antiguo 03/09/2005, 11:07
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
No es que quiera hacerlo, era por saber más.
Para saber si podia cargar el fichero JS desde el servidor y agregar window.load desde el servidor también. Para tener la página de diseño más limpia.
He mirado varios ejemplos del método RegisterClientScriptBlock que me dices. Parece que se codifica todo el codigo javascript en un string y luego se le pasa todo el parrafón al método como segundo parámetro. Tendría que pasar todo el código del fichero JS?? Uff...
Bueno, muchas gracias xknown.
Saludos!
__________________
..:: moNTeZIon ::..
  #7 (permalink)  
Antiguo 03/09/2005, 11:36
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Cita:
Iniciado por moNTeZIon
Tendría que pasar todo el código del fichero JS?? Uff...
No, simplemente me refería a:
Código:
<script type="text/javascript">
window.onload = function () {
  CargarCabecera();
}
</script>
Inclusive podrías poner dicha función en el archivo C_Cabecera.js

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #8 (permalink)  
Antiguo 04/09/2005, 16:27
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Es verdad.
Ahora solo tengo esto en la página aspx:
<script language="JavaScript" src="C_Cabecera.js"></script>

Gracias una vez más xknown.
Un saludo!
__________________
..:: moNTeZIon ::..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:40.