none
Botón no ejecuta su evento clic y error al cerrar pagina web. RRS feed

  • Pregunta

  • Hola, buen día.

    Antes que nada agradezco la atención que le presten a mi pregunta.

    Recién estoy iniciando en el desarrollo de aplicaciones web específicamente con ASP.Net. y estoy presentando un problema en un Webform, en el cual tengo colocados (en ese orden) un botón que dice Nuevo, un UpdatePanel1 en el cual tengo un GridView que me muestra los datos de un catalogo de departamentos, y un Panel que contiene otro UpdatePanel2 del cual extiendo su funcionalidad con un ModalPopupExtender (ajaxControlToolkit.15.1)para crear una ventana modal, dentro de este tengo un cuadro de texto y dos botones, aceptar y cancelar respectivamente.

    La idea es implementar una ventana modal que permita agregar un nuevo registro y también permita actualizar los datos de un registro ya existente. La modificación de los datos ya funciona, el problema lo tengo cuando intento agregar un nuevo registro. Pues la ventana modal la intento lanzar desde el botón Nuevo que esta fuera de los UpdatePanel.

    Cuando carga la pagina se llena el GridView, y si hago clic en botón Nuevo, no hace nada, no muestra la ventana modal que está en el UpdatePanel2, es decir no se ejecuta el evento Clic del botón. Pero si primero hago Clic en un registro del GridView como si fuera a modificar se muestra la ventana modal, la cierro y si después le doy clic en el botón Nuevo, entonces si se ejecuta el evento Clic del botón y si muestra la ventana modal para ingresar un nuevo registro.

    Realmente no entiendo por que responde así, he buscado en los foros pero no he encontrado algo similar a lo que a mi se me presenta.

    Adicionalmente y provechando el espacio quiero comentar que si en el Webconfig del sitio tengo activada la opción Debug=true, al cerrar la pagina me envía un mensaje de error del cual tampoco he podido encontrar una solución, según yo es ocasionado por Ajax, por que hasta antes de ello no lo enviaba, ademas de que si abro la pagina y la cierro sin operar la funcionalidad del GridView no me envía el error, espero alguien tenga una idea de como resolverlo.

    Estoy trabajando con VS 2012 y .Net Framework 4.5.

    Les adjunto imágenes y el código que tengo.

    Saludos.

    En ejecución.

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <style type="text/css">
            .auto-style2 {
                width: 186px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager>
            <br />
            <asp:Label ID="lblPostbackCompleto" runat="server"></asp:Label>
            <br />
            <asp:Button ID="btnNuevo" runat="server" Text="Nuevo" Height="39px" Width="99px" OnClick="btnNuevo_Click" /> 
            
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>              
                    <asp:Label ID="lblPostbackParcial" runat="server"></asp:Label>
                    <asp:GridView ID="gvDepartamentos" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="departamentoid,descripcion" Width="336px" OnSelectedIndexChanged="gvDepartamentos_SelectedIndexChanged">
                        <Columns>
                            <asp:CommandField ButtonType="Image" SelectImageUrl="~/imagenes/edit_button.png" ShowSelectButton="True" />
                            <asp:BoundField DataField="Descripcion" HeaderText="Descripcion" SortExpression="Descripcion" />
                        </Columns>
                    </asp:GridView>
                    <asp:ObjectDataSource ID="odsDepartamentos" runat="server"></asp:ObjectDataSource>
                    <asp:Label ID="lblMensajeResultado" runat="server"></asp:Label>
                </ContentTemplate>            
            </asp:UpdatePanel>
            <br />
    
            <asp:Button ID="btnModal" runat="server" Text="Modal" style="display: none"/>
    
            <asp:Panel ID="pnlDialogo" runat="server">
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                    <ContentTemplate>
                        <table style="width: 100%;">
                            <tr>
                                <td class="auto-style2">
                                    <asp:Label ID="Label1" runat="server" Text="Nombre departamento:"></asp:Label>
                                </td>
                                <td>
                                    <asp:TextBox ID="txtDepartamento" runat="server" Height="16px" Style="margin-left: 0px" Width="288px"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Valor requerido" ControlToValidate="txtDepartamento">*</asp:RequiredFieldValidator>
                                </td>
                            </tr>
                            <tr>
                                <td class="auto-style2">
                                    <asp:Button ID="btnAceptar" runat="server" Text="Aceptar" OnClick="btnAceptar_Click" />
                                </td>
                                <td>
                                    <asp:Button ID="btnCancelar" runat="server" Text="Cancelar" OnClick="btnCancelar_Click" />                                
                                </td>
                            </tr>
                            <tr>
                                <td class="auto-style2">&nbsp;</td>
                                <td>
                                    <cc1:ValidatorCalloutExtender ID="vceValida" runat="server" TargetControlID="RequiredFieldValidator1">                                    
                                    </cc1:ValidatorCalloutExtender>
                                </td>
                            </tr>
                        </table>
                    </ContentTemplate>               
                </asp:UpdatePanel>
            </asp:Panel>
            
            <cc1:ModalPopupExtender ID="mpeDialogo" runat="server"
                CancelControlID="btnCancelar"
                DropShadow="true"
                OkControlID="btnAceptar"
                PopupControlID="pnlDialogo"
                TargetControlID="btnModal">
            </cc1:ModalPopupExtender>
        </div>
        </form>
    </body>
    </html>
    

    public partial class wfDepartamentos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Logica.loDepartamentos lo = new Logica.loDepartamentos();
                gvDepartamentos.DataSource = lo.ObtenerCatalogo();
                gvDepartamentos.DataBind();
            }
    
            lblPostbackCompleto.Text = DateTime.Now.ToLongTimeString();
            lblPostbackParcial.Text = DateTime.Now.ToLongTimeString();
        }
        protected void gvDepartamentos_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow row = gvDepartamentos.SelectedRow;
            ViewState["tipoMovimiento"] = 2;
            ViewState["idDepartamento"] = Convert.ToInt32(gvDepartamentos.DataKeys[row.RowIndex].Values["departamentoid"]);
            txtDepartamento.Text = Convert.ToString(gvDepartamentos.DataKeys[row.RowIndex].Values["descripcion"]);
            this.mpeDialogo.Show();
        }
    
         protected void btnNuevo_Click(object sender, EventArgs e)
        {
            txtDepartamento.Text = " ";
            ViewState["tipoMovimiento"] = 1;        
            this.mpeDialogo.Show();
        }
    
        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            if (int.Parse(ViewState["tipoMovimiento"].ToString()) == 1)
            {
                Comun.Departamento d = new Comun.Departamento();
                var lo = new Logica.loDepartamentos();
                d.Descripcion = txtDepartamento.Text;
    
                if (lo.Insertar(d))
                {
                    gvDepartamentos.DataSource = lo.ObtenerCatalogo();
                    gvDepartamentos.DataBind();
                    lblMensajeResultado.Text = "Se agrego el departamento correctamente";
                }
                else
                    lblMensajeResultado.Text = "No se agrego el departamento...";
            }
            else
            {
                Comun.Departamento d = new Comun.Departamento();
                d.DepartamentoId = int.Parse(ViewState["idDepartamento"].ToString());
                d.Descripcion = txtDepartamento.Text;
    
                var lo = new Logica.loDepartamentos();
                if (lo.Actualizar(d))
                {
                    gvDepartamentos.DataSource = lo.ObtenerCatalogo();
                    gvDepartamentos.DataBind();
                    lblMensajeResultado.Text = "Actualización realizada correctamente...";
                }
                else
                    lblMensajeResultado.Text = "No se realizo ninguna actualizacion...";
            }
    
            this.mpeDialogo.Hide();
        }
    
        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            this.mpeDialogo.Hide();
        }
    }

    error al finalizar la pagina.



    Saludos

    jueves, 23 de abril de 2015 23:27

Respuestas

  • Hola tehuacaneroMx:

    Te recomiendo que le des una ojeada al siguiente blog; en el cual la solución es simple:

    Quitar el control ScriptManager y poner el control ToolkitScriptManager.

    Saludos,



    Camilo Villa

    • Marcado como respuesta Gil Villa miércoles, 29 de abril de 2015 22:46
    viernes, 24 de abril de 2015 5:05

Todas las respuestas

  • Hola tehuacaneroMx:

    Te recomiendo que le des una ojeada al siguiente blog; en el cual la solución es simple:

    Quitar el control ScriptManager y poner el control ToolkitScriptManager.

    Saludos,



    Camilo Villa

    • Marcado como respuesta Gil Villa miércoles, 29 de abril de 2015 22:46
    viernes, 24 de abril de 2015 5:05
  • Que tal Camilo, gracias por Responder.

    Resulta que la versión del ajaxControlToolkit es la última,, la .15.1, en la cual menciona que ya no incluye el ToolkitScriptManajer, por lo que se debe utilizar el ScriptManajer normal y que opera solo con .Net Framework 4.0 y superior.

    Por cierto, llevamos el mismo apellido, Gilberto Villa a tus ordenes.

    Saludos.


    Saludos

    viernes, 24 de abril de 2015 21:13