none
ventana modal en asp.net RRS feed

  • Pregunta

  • Buenos dias.

    tengo el siguiente problema y es que quiero abrir ventanas en modo modal desde asp.net y lo consigo ya sea utilizando codigo javascript en el source de la pagina aspx o generandolo directamente en un boton.

    lo que hago para los dos casos es lo siguiente:

    1. Codigo javascript:

     <script type='text/javascript'>
                function ventana() {
                
                    window.showModalDialog('pg2.aspx', '', 'dialogHeight:450 px;dialogWidth:670px;center:Yes;help:No;resizable: No;status:No;');
                }
            </script>
    
    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="ventana();" onclick="Button1_Click" />
    

    aqui la pagina se abre en modo modal  y espera salir de la ventana modal y cuando eso sucede entra al codigo que esta en el boton.

    esto me corre bien en firefox porque no deja acceder ala ventana que lo invoco hasta que la modal se cierre pero en google chrome abre la ventana espera que se cierre para ejecutar el codigo del boton pero deja accer a la ventana que invoco la pagina en modo modal.

    y lo que quiero es que tenga el mismo ciclo en todos los navegadores, que seria:

    • abrir pagina en modo modal
    • mientras esta este abierta no dejara acceder a la pagina que la invoco
    • cuando se cierre la pagina modal ejecutar el codigo que esta dentro del boton

    2. codigo generado dinamicamente

    var fn: StringBuilder := new StringBuilder();
      
      fn.Append("<script type='text/javascript'>");
      fn.Append(" function fnAceptar() { ");
      //fn.Append("alert('Para seleccionar asegurese de que no sea un registro de nivel');");
      //fn.Append(" window.showModalDialog('PgRdPagoPSERegistro.aspx' ,'', 'dialogWidth:800px;dialogHeight:850px'); return true;");
      fn.Append("window.showModalDialog('pg2.aspx','','dialogHeight:450 px;dialogWidth:670px;center:Yes;help:No;resizable: No;status:No;');");
      fn.AppendLine("");
    
      fn.Append('} ');
      fn.AppendLine("");
      fn.Append("fnAceptar();");
      fn.Append(" </script>");
    
    ScriptManager.RegisterStartupScript(self, typeof(Page), 'alerta', fn.ToString, false);
    
    
    var suma:Integer;
    
      suma:=5+5;
    

    aqui la pagina se abre en modo modal teniendo el mismo comportamiento mencionado anteriormente pero no espera que se cierre la apgian modal para seguir jecutando el codigo si no que lo ejecuta sin importar que esta este cerrada, y aqui quisiera saber como evitar que el codigo se siga ejecutando.

    PD: el codigo mostrado es con el que estoy haciendo rueba y la sintaxis es de un lenguaje que se llama delphi prism que trabaja sobre .net


    felix hdez

    viernes, 31 de agosto de 2012 15:43

Respuestas

  • claro esta que el control modal lo puedes extender a algo mas, por ejemplo puedes agregar un control de usuario ascx

    <%@ Register src="Control.ascx" tagname="control" tagprefix="ctrl" %>
    
    <!-- Tu panel para el popup -->
    <asp:Panel ID="pnl_Modal" runat="server" CssClass="tcall" Style="display:none;">
            <asp:UpdatePanel ID="udp_transferCall" runat="server"       UpdateMode="Conditional">
            <ContentTemplate>
                <Control:ctrl ID="cotrolAscx" runat="server" />
            </ContentTemplate>
            </asp:UpdatePanel>
            <center>
                <asp:Button ID="btn_exit" runat="server" Text="Exit" />
            </center>
    </asp:Panel>

    dentro de tu ModalPopup puedes colocar el control, este se cargara como si abrieras una pagina pero de forma Modal

    saludos



    • Marcado como respuesta felixDHA viernes, 31 de agosto de 2012 17:12
    viernes, 31 de agosto de 2012 16:17

Todas las respuestas

  • Si no puedes solucionar ese problema, podrías intentar usando el control ModalPopupExtender de ajax. Aquí hay un ejemplo bien explicado de como funciona

    Modal Popup Ajax

    saludos


    viernes, 31 de agosto de 2012 15:53
  • hola

    el tema es que depende de la implementacion que le dio cada browser

    no has evaluado usar el modalpopup de ajax o jquery, son mucho mejores, solo que no cargarias una pagina, sino que defines un form

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 31 de agosto de 2012 15:53
  • muy completo el manual sebastian y leandro gracoas por los aportes. Pero esa implementacion no me serviria a mi proyecto porque lo que necesito es abrir una pagina, ya que consumo un webservice de un ente externo que me devuelbe una pagina que debo mostrar al usuario para que haga ciertas operaciones y cuando se cierre consumir otros servicios del web service y capturar los resultados de la operación del usuario. por eso necesitaría la funcionalidad como lo planteado en el comienzo.

    cualquier cosa que me puedan colaborar se los agradezco.


    felix hdez

    viernes, 31 de agosto de 2012 16:05
  • claro esta que el control modal lo puedes extender a algo mas, por ejemplo puedes agregar un control de usuario ascx

    <%@ Register src="Control.ascx" tagname="control" tagprefix="ctrl" %>
    
    <!-- Tu panel para el popup -->
    <asp:Panel ID="pnl_Modal" runat="server" CssClass="tcall" Style="display:none;">
            <asp:UpdatePanel ID="udp_transferCall" runat="server"       UpdateMode="Conditional">
            <ContentTemplate>
                <Control:ctrl ID="cotrolAscx" runat="server" />
            </ContentTemplate>
            </asp:UpdatePanel>
            <center>
                <asp:Button ID="btn_exit" runat="server" Text="Exit" />
            </center>
    </asp:Panel>

    dentro de tu ModalPopup puedes colocar el control, este se cargara como si abrieras una pagina pero de forma Modal

    saludos



    • Marcado como respuesta felixDHA viernes, 31 de agosto de 2012 17:12
    viernes, 31 de agosto de 2012 16:17
  • Estimado, tengo el mismo problema, necesito abrir una página y al cerrar esta que se ejecute un código x.
    jueves, 26 de septiembre de 2013 21:48
  • Terrible esa página, no hay orden en sus contenidos ni nada, no te recomiendo usarla.

    Del Castillo Victor Andres - Lima Peru

    viernes, 31 de marzo de 2017 19:23