Tengo un dataGrid , o gridView, y le he puesto tremendo botonazo para cargarme una fila. Pero haciendo pruebas me encuentro con que he hecho desaparecer media hora de trabajo que me costó introducir un test de pruebas (es una aplicación para gestionar test de autoescuela) sin tan siquiera avisarme de la barbaridad que iba a hacer.
Me acuerdo que ya he visto la solución por algún lado y, efectivamente, está en múltiples sitios pero creo que puedo mejorar la comunicación y explicarlo aún más sencillo.
En javascript hay una serie de métodos que abren una ventana de alerta. Uno de ellos se llama “confirm(
Este caso específico lo he implementado para un botón de un grid, pero nos vale para cualquier control tipo botón o similar.
asp:button id="Button1" runat="server"
CausesValidation="False"
CommandName="Delete"
Text="Borrar"
CssClass="boton"
OnClientClick="return confirm('¿Está seguro de borrar esta Pregunta?');" />
Como vés es un botón normal y corriente, con un CommandName al estar integrado en un Grid. De aquí solamente hay que quedarse con la copla de las partes subrayadas.
“OnClientClick”, que nos permite que este comportamiento suceda en el cliente, “return” que le devuelve al cliente si el usuario ha aceptado o no, “confirm(
Por último esto no funcionaría a menos que le digamos que no valide el control, es decir “CausesValidation=false”.
Esto lo que consigue es que si el cliente pulsa aceptar, al retornar true se ejecuta el postback del botón y todo lo que implica. Vamos, en este caso borra la fila. En el caso que se retorne false entonces no realiza el postback y todo se queda como está.
Si quieres la información detallada del porqué pásate por este foro en donde RootK lo explica muy bien.
1 comentario:
Pues a mi uno que quiero mucho me ha hecho poner una doble confirmación:
function ValidarEliminar_2()
{
if (confirm('¿Está vd. seguro/a?\n\nEliminar la obra seleccionada.'))
{
if (confirm('Por favor...\n\nConfirme de nuevo que desea eliminar la obra seleccionada.'))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
En el botón (LinkButton con imagen incrustada):
OnClientClick="return ValidarEliminar_2();"
Por cierto, que yo no tengo puesto el CausesValidation = False, será el valor por defecto, digo yo.
Saludines
Publicar un comentario