Estoy escribiendo una aplicación web asp.net. y he golpeado un poco una pared de ladrillos Básicamente tengo 2 páginas, la página principal con un cuadro de texto y una ventana emergente que contiene una vista de árbol. Mi problema es este cuando selecciono un elemento de vista de árbol, quiero que el programa realice algunas transacciones de la base de datos usando asp.net y luego pase el valor recuperado de la base de datos a una función de JavaScript que devuelve los datos de la página emergente a la página principal. Mi problema es que no puedo encontrar ninguna forma de llamar a una función de JavaScript desde asp.net. Intenté asignar atributos a los controles en la carga de la página, pero esto no funciona como cuando la página carga los datos que no se han recuperado de la base de datos.

0
zeocrash 6 jul. 2009 a las 18:37

4 respuestas

La mejor respuesta

Eche un vistazo a la clase ClientScriptManager. Puede registrar scripts desde el código subyacente que se ejecutará cuando se cargue la página HTML. Esas secuencias de comandos pueden llamar a otras funciones de JavaScript en la página.

Hay muchos tutoriales y ejemplos en la Web. Aquí hay uno que encontré que puede ayudar, pero hay muchos más. Cómo usar el administrador de scripts del cliente

2
Ken Pespisa 6 jul. 2009 a las 14:48

Usted dio en el clavo cuando dijo "He intentado asignar atributos a los controles en la carga de la página, pero esto no funciona porque cuando la página carga los datos no se han recuperado de la base de datos". Solo necesita descubrir cuándo extrae los datos de la base de datos y luego asignar los valores después de eso. Sin mirar su código, no hay forma de saberlo con certeza, pero Page_PreRender es probablemente una buena apuesta para asignar sus valores ... probablemente sea después de que extraiga información de la base de datos ... es prácticamente el último lugar donde puede hacer que las cosas sucedan antes de que se genere el html para el cliente.

1
Beska 6 jul. 2009 a las 14:55

Este ayuda a recuperar ventanas emergentes de valores usando javascript http://www.eggheadcafe.com/articles/20060117.asp

Este muestra cómo disparar una devolución de datos usando javascript y administrarlo en el código subyacente. http://weblogs.asp.net/mnolton/archive/ 2003/06/04 / 8260.aspx

Si los combina y usa Control.ClientID para encontrar el "nombre html" real de sus controles asp.net, podrá configurarlo en poco tiempo.

Puede que no sea la forma más bonita de hacerlo en la ciudad y, por cierto, hacer llorar al pequeño Jesús, pero de todos modos, funciona.

[editar] Oh. Acabo de ver que parece que respondí la pregunta al revés, o "cómo activar el código detrás de Javascript". Creo que el método que sugiero puede ayudarlo, si lo usa correctamente.

El javascript de la ventana emergente debe pasar la información a la ventana principal, y la función de la ventana principal debe llamar a una devolución de datos cuando recibe la información.

El javascript de la ventana emergente solo debe registrarse en una devolución de datos con la información correcta recuperada, de modo que cuando se produce la devolución en la ventana emergente debido a la selección de la información correcta, la ventana se cierra y pasa la información a la página principal.

La página principal, que desencadena la devolución de datos, hace las cosas que necesita, y la aplicación se reanuda "normalmente" a partir de ahí, haciendo lo que sea que necesite, fuera de la página emergente.

0
Olivier Tremblay 6 jul. 2009 a las 15:24

Puede invocar una función que reside en la Página principal y llamar a esa función en la Página principal desde la Página secundaria, que es su ventana emergente.

Por favor, consulte estos enlaces para referencias

http://chiragrdarji.wordpress.com/2007/03/10/call-parent-windows-javascript-function-from-child-window-or-passing-data-from-child-window-to-parent-window-in-javascript/

http://www.webmasterworld.com/forum91/2957.htm

http://hspinfo.wordpress.com/2008/01/12/call-parent-windows-javascript-function-from-child-window/

0
hadi teo 6 jul. 2009 a las 14:57