2008-09-03 20 views

Respuesta

6

Puede llamar Show() método durante la devolución de datos para evitar que la ventana emergente modal se cierre

MyModalPopoupExtender.Show() 
3
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     // reshow 
     MyModalPopup.Show() 
    } 
} 
1

supongo que las obras, pero no en mi caso. Tengo un control de usuario que se abrió en una ventana emergente modal y este control de usuario hace la devolución de datos en sí. Entonces en ese control de usuario no tengo ninguna propiedad emergente modal.

supongo, he de crear un evento para mi control de usuario y la página que se abre la ventana emergente modal que volver a abrir en este evento.

1

Como ya sabes, la ventana emergente modal solo está en el lado del cliente, sí puedes recopilar información en ella durante la devolución de datos, pero si haces una devolución de datos se ocultará el 100% del tiempo.

Por supuesto, al igual que otras propuestas, se puede hacer un .show durante la devolución de datos, pero depende de lo que tiene que hacer.

En realidad, no sé por qué necesita una devolución de datos, si es para algunas validaciones tratan de hacerlas clientside.

Podría decirnos por qué tiene que hacer una devolución de datos, tal vez podríamos ayudar mejor! :)

+1

Oye, gracias por tu respuesta, pero realmente no recuerdo el problema :) Supongo que nos deshicimos de él. –

+1

jajaja !!! ok, entonces XD Quizás podría publicar su solución (la forma en que funciona en atm) si no le importa. Tengo mucha curiosidad sobre el caso y me gustaría ver cómo puedes hacerlo. – ForceMagic

1

Siguiendo caso anterior ...

En Simple.aspx, el usuario tiene que introducir el nombre de una empresa. Si el usuario no recuerda el nombre de la empresa, puede hacer clic en un botón que abrirá una ventana emergente modal.

lo que yo quiero hacer en la ventana modal es permitir al usuario hacer una búsqueda de una lista de empresas. Puede ingresar un nombre parcial y hacer clic en buscar. Los emparejamientos se mostrarán en una lista a continuación. Él puede hacer clic en un elemento de la lista y regresar. Si la empresa no existe, puede hacer clic en el botón 'Nuevo' para crear una nueva compañía.

Así que, como puede ver, quiero mucha funcionalidad en esta ventana modal.

Gracias!

JC

+0

En este caso, defina un evento personalizado en la página principal desde el control del usuario y en el que incluso escriba un código para abrir una ventana emergente modal. –

9

Coloque los controles dentro del panel de actualización. Por favor, vea mi código de ejemplo, pnlControls es el control que mantiene los controles que se mostrarán en la ventana emergente:

<asp:Panel ID="pnlControls" runat="server"> 

    <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
       <asp:Button ID="TestButton" runat="server" Text="Test Button" onclick="TestButton_Click" /> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>   
     </ContentTemplate> 

    </asp:UpdatePanel> 

Esto va a hacer el trabajo para usted :)

Saludos, Gregor Primar

+0

Esto funciona bien. En realidad, puede ajustar todo el conjunto de controles en el modal si es necesario para evitar tener que crear muchos Paneles de actualización más con desencadenantes para los otros Paneles de actualización. – atconway

1

Estaba teniendo este mismo problema manteniendo un modal abierto durante la devolución de datos.

Mi solución:

Uso EventTarget para determinar si la devolución de datos proviene de un control en el modal y mantener el modelo abierto si lo es. La devolución de datos puede provenir de un control en el modal si el modal está abierto.

En el evento de carga para el control de página que contiene el modal. Determine si la devolución de datos es un hijo mío. Determine si proviene del control que está en el panel modal.

Protected Sub Control_Load(sende As Object, e As EventArgs) Handles Me.Load 
     If IsPostBack Then 
      Dim eventTarget As String = Page.Request.Params.Get("__EventTarget") 
      Dim eventArgs As String = Page.Request.Params.Get("__EventArgument") 

      If Not String.IsNullOrEmpty(eventTarget) AndAlso eventTarget.StartsWith(Me.UniqueID) Then 
       If eventTarget.Contains("$" + _credentialBuilder.ID + "$") Then 
        ' Postback from credential builder modal. Keep it open. 
        showCredentialBuilder = True 
       End If 
      End If 
     End If 
    End Sub 

En prerender comprobar mi bandera y mostrar manualmente el modal

Protected Sub Control_PreRender(ByVal sende As Object, ByVal e As EventArgs) Handles Me.PreRender 
     If showCredentialBuilder Then 
      _mpeCredentialEditor.Show() 
     End If 
    End Sub 
Cuestiones relacionadas