none
Ejecutar Script RRS feed

  • Pregunta

  • Hola amigos, tengo este codigo:

            protected void btnEliminar_Click(object sender, EventArgs e)
            {
                nombre_empleado = gvdEliminar.SelectedRow.Cells[3].Text;
                string script = @"<script type='text/javascript'>
                        var seleccion = confirm('Esta seguro que desea eliminar a " + nombre_empleado + @"?'); 
                    if(seleccion==false){
                            $(':text').val('');
                        }
                        </script>";
    
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Confirm", script, false);
                eliminar(txtNombreEliminar.Text);
            }

    y el problema que tengo es que cuando doy click en el boton Eliminar primero ejecuta la función eliminar y después el script, y lo que quiero es que primero se ejecute el script y en caso de darle "Cancelar" (porque es un confirm) no se ejecute o en el caso contrario se ejecute la función "eliminar", pero lo hace de manera indiferente al script.

    Gracias!

    jueves, 2 de mayo de 2019 19:17

Respuestas

  • hola

    Donde ubicas el boton, porque si esta fuera de grid no funciona el SelectedRow, este solo aplica si es un Command dentro del propio gridview


    >>quiero es que primero se ejecute el script y en caso de darle "Cancelar"

    para eso deberas hacer un post desde javascript despeus de presionado el boton

     Mensaje con confirm

     hacer postback desde javascript y pasar un valor a una variable

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 2 de mayo de 2019 19:57
  • y el problema que tengo es que cuando doy click en el boton Eliminar primero ejecuta la función eliminar y después el script

    La razón por la que se comporta así es la siguiente:

    Cuando pulsas el botón Eliminar, de momento todavía no existe ese script dentro de la página que tiene cargada el navegador. Así pues, el navegador procesa el click con normalidad y hace un "submit" al servidor. El servidor ejecuta primero el Page_Load, después todos los eventos de cambio (tales como selectedindex_changed o text_changed, etc.) y luego los eventos de acción, en particular el evento click del botón.

    Dentro del click, primero registras el script, con lo que el servidor "toma nota" de que deseas incrustar ese script en la página html. Después ejecutas "eliminar". Después de eso se ejecutan cualesquiera otros eventos de lado servidor que correspondan dentro del ciclo de vida de la página.

    Cuando todo eso ha terminado, el servidor "ensambla" la página html que contendrá todos los resultados de ejecutar los eventos de lado servidor, incluyendo el script incrustado dentro del html. Entonces se envía la página al navegador, y el navegador ejecuta el script que ha recibido dentro de la página. Como ves, esto último ocurre mucho después de que el registro ya haya sido eliminado en el lado servidor.

    ¿Cuál es la solución para hacer lo que quieres? Ubica el script en una función dentro de la propia página (no en el code-behind) y conéctalo al evento "onclick" del botón. De esa manera, se ejecuta en lado cliente antes de hacer el POST al servidor. Recuerda hacer un "return false" en el script si el usuario dice que no está seguro, para evitar que el POST se produzca en ese caso.


    viernes, 3 de mayo de 2019 15:30

Todas las respuestas

  • hola

    Donde ubicas el boton, porque si esta fuera de grid no funciona el SelectedRow, este solo aplica si es un Command dentro del propio gridview


    >>quiero es que primero se ejecute el script y en caso de darle "Cancelar"

    para eso deberas hacer un post desde javascript despeus de presionado el boton

     Mensaje con confirm

     hacer postback desde javascript y pasar un valor a una variable

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 2 de mayo de 2019 19:57
  • y el problema que tengo es que cuando doy click en el boton Eliminar primero ejecuta la función eliminar y después el script

    La razón por la que se comporta así es la siguiente:

    Cuando pulsas el botón Eliminar, de momento todavía no existe ese script dentro de la página que tiene cargada el navegador. Así pues, el navegador procesa el click con normalidad y hace un "submit" al servidor. El servidor ejecuta primero el Page_Load, después todos los eventos de cambio (tales como selectedindex_changed o text_changed, etc.) y luego los eventos de acción, en particular el evento click del botón.

    Dentro del click, primero registras el script, con lo que el servidor "toma nota" de que deseas incrustar ese script en la página html. Después ejecutas "eliminar". Después de eso se ejecutan cualesquiera otros eventos de lado servidor que correspondan dentro del ciclo de vida de la página.

    Cuando todo eso ha terminado, el servidor "ensambla" la página html que contendrá todos los resultados de ejecutar los eventos de lado servidor, incluyendo el script incrustado dentro del html. Entonces se envía la página al navegador, y el navegador ejecuta el script que ha recibido dentro de la página. Como ves, esto último ocurre mucho después de que el registro ya haya sido eliminado en el lado servidor.

    ¿Cuál es la solución para hacer lo que quieres? Ubica el script en una función dentro de la propia página (no en el code-behind) y conéctalo al evento "onclick" del botón. De esa manera, se ejecuta en lado cliente antes de hacer el POST al servidor. Recuerda hacer un "return false" en el script si el usuario dice que no está seguro, para evitar que el POST se produzca en ese caso.


    viernes, 3 de mayo de 2019 15:30