none
Insertar un mensaje confirm para borrar un registro dentro de un gridview RRS feed

  • Pregunta

  • Utilizo el framework 4

    Tengo un gridview el cual se genera por medio de la base de datos y me muestra los horarios que se han dado de alta anexo imagen.

    Explico el funcionamiento

    El gridview se llama gvHorarios y tiene activada la propiedad AutoGenerateDeleteButton y al momento de darle click en la opción Delete hacer todo el proceso y borrra el registro que se selección y al fina me manda un mensaje que se borró el registro.

    Mi duda

    Lo que quiero hacer es que cuando le de click a la opción Delete me muestre un mensaje Confirm preguntando que si está seguro de borrar el registro.

    Si seleccionamos aceptar me haga el borrado del registro si seleccionamos cancela que no me haga el borrado del registro:

    Anexo la parte del cliente

                                    <asp:GridView ID="gvHorarios" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="Ope_idReg" ForeColor="#333333" GridLines="None" AllowPaging="True" PageSize="20" Width="400px" OnPageIndexChanging="gvHorarios_PageIndexChanging" AutoGenerateDeleteButton="True" OnRowDeleting="gvHorarios_RowDeleting" OnSelectedIndexChanged="gvHorarios_SelectedIndexChanged" CellSpacing="2">

                                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />

                                        <Columns>

                                            <asp:TemplateField>

                                                <HeaderTemplate>

                                                    <!--<asp:CheckBox ID="chkCabecera" runat="server" OnCheckedChanged="chkCabecera_CheckedChanged" AutoPostBack="true" />-->

                                                </HeaderTemplate>

                                                <ItemTemplate>

                                                    <!--<asp:CheckBox ID="chkHorario" runat="server" AutoPostBack="true" />-->

                                                </ItemTemplate>

                                            </asp:TemplateField>

                                            <asp:BoundField DataField="Ope_Fecha" DataFormatString="{0:yyyy-MM-dd}" HeaderText="Fecha" />

                                            <asp:BoundField DataField="Ope_Hora" HeaderText="Hora" />

                                        </Columns>

                                        <EditRowStyle BackColor="#999999" />

                                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

                                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />

                                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />

                                        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />

                                        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />

                                        <SortedAscendingCellStyle BackColor="#E9E7E2" />

                                        <SortedAscendingHeaderStyle BackColor="#506C8C" />

                                        <SortedDescendingCellStyle BackColor="#FFFDF8" />

                                        <SortedDescendingHeaderStyle BackColor="#6F8DAE" />

                                    </asp:GridView>

     

    Anexo el código del proceso para borrar el registro:

     

        protected void gvHorarios_RowDeleting(object sender, GridViewDeleteEventArgs e)

        {

            try

            {

     

                int id = Convert.ToInt32(gvHorarios.DataKeys[e.RowIndex].Value);

                objRegstro.borraRegistro(id);

                gvHorarios.DataSource = objReporte.totalFechas();

                gvHorarios.DataBind();

     

                string msjBorrar = @"<script type='text/javascript' - warning'>

                                                          alert('Se borro el registro');

                                                          </script>";

                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", msjBorrar, false);

        }

            catch (Exception)

            {

                string msjError = @"<script type='text/javascript' - warning'>

                                                          alert('¡Error no se puede borrar registro!');

                                                          </script>";

        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", msjError, false);

            }

        }

     

    lunes, 21 de mayo de 2018 14:38

Todas las respuestas

  • Hola , podrías leer este corto articulo

    [GridView] Javascript botón de eliminar con confirmación


    Votar es agradecer.
    Saludos.
    Lima-Perú

    lunes, 21 de mayo de 2018 16:54
  • Hola Augusto he realizado lo siguiente el cual ya me funciona en la parte que pide la confirmación

        protected void gvHorarios_RowDeleting(object sender, GridViewDeleteEventArgs e)

        {

            try

            {

     

                string msjConfirma = @" <script type='text/javascript'>

                                       var mensaje;      

                                       var opcion = confirm('Deseas eliminar el registro');

     

                                       if(opcion == true){


                                       }

                                       else{

                                       mensaje = 'Has clickeado CANCELAR';

                                       }

                                       </script>";

                ScriptManager.RegisterStartupScript(this, typeof(Page), "Confirma", msjConfirma, false);

     

                int id = Convert.ToInt32(gvHorarios.DataKeys[e.RowIndex].Value);

                objRegstro.borraRegistro(id);

                gvHorarios.DataSource = objReporte.totalFechas();

                gvHorarios.DataBind();

     

                string msjBorrar = @" <script type='text/javascript' - warning'>

                                                          alert('Se borro el registro');

                                                          </script>";

                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", msjBorrar, false);

            }

            catch (Exception)

            {

                string msjError = @"<script type='text/javascript' - warning'>

                                                          alert('¡Error no se puede borrar registro!');

                                                          </script>";

        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", msjError, false);

            }

        }

    El problema es que cuando le doy click me pregunta la confirmación pero antes ya me borro el registro entonces ya mi duda es como puede ya hacer la validación dentro del if para que no me borreo primero el registro si no despues de que haya dado click en aceptar

    lunes, 21 de mayo de 2018 17:14
  • Hola el tema es que como lo vienes haciendo ya se ingresó a un evento del lado del servidor y no va a salir asi le registres el javascript en el mismo evento , debe ser antes que se ejecute el evento, la manera de salir de esos eventos podría ser con un return pero creo que no necesitas incorporar mas lógica ,según lo que planteas solo necesitas un mensaje de confirmación simple.

    protected void gvHorarios_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
         if (condicion==cierta)
    
         {
    		 return;//aca saldría del evento.
    		 
         }
    	 else
    	 {
    		 //continuar el código
    	 }
    }


    Votar es agradecer.
    Saludos.
    Lima-Perú


    lunes, 21 de mayo de 2018 17:28
  • Para cancelar la eliminación debes usar "e.Cancel = true;". No se exactamente como ponerlo dentro del codigo, pero de alguna manera deberías capturar la respuesta del mensaje de confirmación, luego dentro de un bloque if pones lo que corresponda según lo confirmado por el usuario.

     protected void gvHorarios_RowDeleting(object sender, GridViewDeleteEventArgs e)
    
        {
          try
    
          {
            string msjConfirma = @" <script type='text/javascript'>
            var mensaje;      
            var opcion = confirm('Deseas eliminar el registro');
    
            if(opcion == false)
               e.Cancel=true;
    
    </script>";
    
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Confirma", msjConfirma, false);
    
     
    
                int id = Convert.ToInt32(gvHorarios.DataKeys[e.RowIndex].Value);
    
                objRegstro.borraRegistro(id);
    
                gvHorarios.DataSource = objReporte.totalFechas();
    
                gvHorarios.DataBind();
    
     
    
                string msjBorrar = @" <script type='text/javascript' - warning'>
    
                                                          alert('Se borro el registro');
    
                                                          </script>";
    
                ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", msjBorrar, false);
    
            }
    
            catch (Exception)
    
            {
    
                string msjError = @"<script type='text/javascript' - warning'>
    
                                                          alert('¡Error no se puede borrar registro!');
    
                                                          </script>";
    
        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", msjError, false);
    
            }
    
        }



    • Editado AntiWork lunes, 21 de mayo de 2018 19:46
    lunes, 21 de mayo de 2018 19:36