2008-08-15 31 views
5

Soy bastante nuevo en ASP.NET e intento aprender cómo se hacen las cosas. Vengo de un fondo de C# por lo que la parte de código subyacente es fácil, pero pensar como un desarrollador web no es familiar.¿Cómo puedo pasar datos de una página aspx a una ventana emergente modal ascx?

Tengo una página aspx que contiene una grilla de casillas de verificación. Tengo un botón que está codificado a través de un evento Button_Click para recopilar una lista de las filas que están marcadas y crear una variable de sesión fuera de esa lista. El mismo botón está referenciado (a través de TargetControlID) por ModalPopupExtender de mi página ascx que controla el panel en la página ascx.

Cuando se hace clic en el botón, se abre la ventana emergente modal pero el evento Button_Click nunca se activa, por lo que el modal no obtiene sus datos de sesión.

Dado que las dos páginas son independientes, no puede llamar a la ModalPopupExtender a partir del código aspx.cs, no puedo llegar a la lista de casillas de verificación del código ascx.cs, y no veo una manera de llene mi variable de sesión y luego active mediante programación otro botón o control oculto que luego abrirá mi ventana emergente modal.

¿Alguna idea?

Respuesta

3

Todo un archivo de control de usuario (.ascx) es un conjunto de controles que ha agrupado para proporcionar alguna funcionalidad reutilizable. Los controles definidos en él todavía se agregan a la colección de control de la página (.aspx) durante la vida útil de la página. El ModalPopupExtender usa javascript y dhtml para mostrar y ocultar los controles en el lado del cliente de control de usuario. Lo que está viendo es que ModalPoupExtender está manejando el evento click en el lado del cliente y está cancelando la devolución posterior al servidor. Este es el comportamiento predeterminado por diseño. Sin embargo, puedes acceder a la colección de control de la página desde el código subyacente de tu usercontrol porque es parte del mismo árbol de control. Simplemente use el método FindControl (xxx) de cualquier control para buscar el elemento secundario que necesita.

0

Lo siento, pero estoy confundido. No puede llamar a un ascx directamente, así que ...

Es su código modal al que está llamando desde dentro de la misma página, como un panel oculto, etc .;

¿O es otra página de aspx a la que llama en un evento de clic?

1

Después de algunas investigaciones siguiendo la respuesta de DancesWithBamboo, descubrí cómo hacer que funcione.
Una referencia de ejemplo a mi página ascx dentro de mi página aspx:

<uc1:ChildPage ID="MyModalPage" runat="server" /> 

El aspx de código subyacente para agarrar y abrir el ModalPopupExtender (llamado ModalPopup) se vería así:

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
      MyModalPage.FindControl("modalPopup"); 
mpe.Show(); 
Cuestiones relacionadas