none
ModalPopupExtender: No ingresa al evento click del botón, solo lanza la ventana modal. RRS feed

  • Pregunta


  • Saludos amigos, felices días de comienzo de año, llego a ustedes para solicitar de favor su asesoría en lo siguiente:

    Estoy mejorando un poco un sistema web; para lo cual estoy haciendo uso de ventanas modales para notificaciones así como para captura de información y recién me empapo al respecto, logré insertar un ventana modal con ModalPopupExtender, la cual se muestra al pulsar sobre botón Guardar, ahora bien tengo campos validados con RequiredFieldValidator... mi problema consiste en que no logró que al pulsar el botón Guardar se ejecute el código de botón del codebehind, me lanza la ventana modal sin pasar por el código del botón... depure y no entra al código...

    Uso masterpage, aclaro no tengo problemas de visualización de la ventana modal, trabajamos con asp.VB, aquí parte del codigo que corresponde a Actualizar.aspx:

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    	<ContentTemplate>
    		<div class="row">
    			<div class="panel panel-default">
    				<div class="panel-body">
                        <div class="form-group">
                            <label id="lblRazonSocial" class="control-label col-md-4">Razón Social:</label>
                            <div class="col-md-5">
                                <asp:TextBox ID="txtrazonsocial" runat="server" class="form-control placeholder text-uppercase" MaxLength="40" TabIndex="1" placeholder="e.j. Bufete Asagro S. C." ToolTip="Nombre del Empleado"  ValidationGroup="RegSinResponder" ></asp:TextBox>
                            </div>
                            <div class="col-md-3">
                                <ajaxToolkit:FilteredTextBoxExtender ID="txtRazonSocial_FilteredTextBoxExtender"
                                    runat="server" Enabled="True" FilterType="LowercaseLetters, UppercaseLetters, Custom" ValidChars=" ÑÁÉÍÓÚ"
                                    TargetControlID="txtrazonsocial">
                                </ajaxToolkit:FilteredTextBoxExtender>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" Display="Dynamic"  ControlToValidate="txtrazonsocial" ErrorMessage="* Razón Social requerido" ValidationGroup="RegSinResponder"  class="text-danger"></asp:RequiredFieldValidator>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-md-4">
                            </div>
                            <div class="col-md-5">
                                <asp:Button ID="BtnGuardar" runat="server" class="btn btn-primary" TabIndex="28" Text="Guardar"  ValidationGroup="RegSinResponder" OnClick="BtnGuardar_Click"  />
                            </div>
                            <div class="col-md-3">
                            </div>
                        </div>
                    </div>
                </div>
            </div>
    	    <asp:Panel ID="Panel1" runat="server" CssClass="modalPopup" align="center" Style="display: none">
    	        <div style="height: 60px">
    	            <asp:Image ID="imgOk" runat="server" ImageUrl="~/content/img/autentificacion/ok.png"  ImageAlign="AbsBottom" Visible="False"  />
    	            <asp:Image ID="imgError" runat="server" ImageUrl="~/content/img/autentificacion/error.png" ImageAlign="AbsBottom" Visible="True"  />
    	            <asp:Label ID="lblMsj" runat="server"  Text="No hay mensaje" Font-Bold="True" Visible="True" ></asp:Label>
    	        </div>
    	        <asp:Button ID="btnClose" runat="server" Text="Cerrar" />
    	    </asp:Panel>
    	    <ajaxToolkit:ModalPopupExtender ID="mp1" runat="server" PopupControlID="Panel1" TargetControlID="BtnGuardar"
    	        CancelControlID="btnClose" BackgroundCssClass="modalBackground">
    	    </ajaxToolkit:ModalPopupExtender>
        </ContentTemplate>
    </asp:UpdatePanel>
    


    Esto en el código del botón:

        Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
            imgError.Visible = False
            Page.Validate("RegSinResponder")
            If Page.IsValid Then
                If Busca_Filtro_Nombre() > 0 Then
                    Crea_Empresa()
                    Empresa_Predeterminada()
                    imgOk.Visible = True
                    lblMsj.Text = "Información Actualizada Satisfactoriamente!"
                Else
                    imgError.Visible = True
                    lblMsj.Text = "Error, Razón Social o RFC ya se Encuentra Registrado!"
                End If
            Else
                imgError.Visible = True
                lblMsj.Text = "Verificar campos requeridos..."
            End If
            Limpiar_Contenedores()
        End Sub

    En el archivo .aspx invoco con onclick el evento, pero aún de esa forma no ejecutar las líneas del codebehind.

    De antemano agradezco sus atenciones, Hasta pronto.

    Les dejo imagen:

    jueves, 3 de enero de 2019 16:29

Respuestas

  • Saludos, he encontrado la solución...

    Revisando en el foro, encontré en una respuesta a una cuestión similar a la que planteo y donde Leandro Tuttini hace referencia al blog de El Aprendiz del Brujo donde en el articulo publicado en el siguiente enlace: ModalPopupExtender. Creando cajas de diálogo en ASP.NET mediante AJAX y específicamente en uno de los comentarios se propone la solución.

    Y si entendí correctamente no es posible que el botón lance una llamada al servidor y llame al vez al la ventana modal con el evento click; por lo que se implementa una técnica que aplica a mi caso donde valido que no estén cajas de texto vacías. El botón Guardar que tengo definido por default llama al evento del botón desde este mismo evento se lanza el llamado a otro botón este último enlazado con el modalpopupextender y el cual por cierto deberá estar con: style="display:none", recordemos que si el botón lo hacemos visible="false" el código del evento no se ejecuta.

    Y eso es todo, les comparto el código que esta trabajando:

                    <div class="form-group">
                        <div class="col-md-4">
                        </div>
                        <div class="col-md-5">
                            <asp:Button ID="BtnAsistente" runat="server" class="btn btn-primary" TabIndex="28" Text="Guardar" ValidationGroup="BuscarRazon" />
                            <asp:Button ID="BtnGuardar" runat="server"  style="display:none" Text="Asistente" visible="true" OnClick="BtnGuardar_Click" />
                        </div>
                        <div class="col-md-3">
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <asp:Panel ID="pnlNotificacion" runat="server" CssClass="modalPopup" align="center" Style="display: none">
            <div style="text-align: left;">
                <b>Control de Descarga [CODES]: Notificación de proceso</b>
            </div>        
            <div style="height: 60px; text-align:left;">
                <br />
                <asp:Image ID="imgOk" runat="server" ImageUrl="~/content/img/autentificacion/ok.png"  ImageAlign="AbsBottom" Visible="False"  />
                <asp:Image ID="imgError" runat="server" ImageUrl="~/content/img/autentificacion/error.png" ImageAlign="AbsBottom" Visible="True"  />
                <asp:Label ID="lblMsj" runat="server"  Text="No hay mensaje" Font-Bold="True" Visible="True" ></asp:Label>
            </div>
            <div style="text-align: right;">
                <asp:Button ID="btnCancelar" Width="60" runat="server" Text="Cerrar" />
            </div>
        </asp:Panel>
        <ajaxToolkit:ModalPopupExtender ID="mpeNotificacion" runat="server"
            TargetControlID="BtnGuardar" PopupControlID="pnlNotificacion" 
            CancelControlID="btnCancelar" BackgroundCssClass="modalBackground"></ajaxToolkit:ModalPopupExtender>

    En el codebehind quedaría para dos botones (btnAsistente y BtnGuardar este ultimo es el que llama al modal, mienstras que el primero solo se ejecuta de manera normal y gracias al ValidationGroup con los RequiredFieldValidator se hace el postback que verifica campos en mi caso vacios):

        Protected Sub BtnAsistente_Click(sender As Object, e As EventArgs) Handles BtnAsistente.Click
            Page.Validate("RegSinResponder")
            If Page.IsValid Then
                If Busca_Filtro_Nombre() > 0 Then
                    Crea_Empresa()
                    imgOk.Visible = True
                    lblMsj.Text = "Información Actualizada Satisfactoriamente!"
                    BtnGuardar_Click(sender, e)
                Else
                    imgError.Visible = True
                    lblMsj.Text = "Error, Razón Social o RFC ya se Encuentra Registrado!"
                    BtnGuardar_Click(sender, e)
                End If
            End If
            Limpiar_Contenedores()
            txtNomRazon.Text = ""
        End Sub
    
        Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
            mpeNotificacion.TargetControlID = "BtnGuardar"
            mpeNotificacion.Show()
        End Sub

    Espero a alguien le sea de utilidad....

    Hasta luego...

    • Marcado como respuesta Marco Bueno viernes, 4 de enero de 2019 1:33
    viernes, 4 de enero de 2019 1:33