Foros del Web » Programando para Internet » ASPX (.net) »

Permite clicar dos veces en Guardar!!

Estas en el tema de Permite clicar dos veces en Guardar!! en el foro de ASPX (.net) en Foros del Web. Buenas, En mi pagina tengo un FormView, y dentro de este un InsertItemTemplate con varios campos y un boton Guardar. Este botón lo tengo programado ...
  #1 (permalink)  
Antiguo 11/05/2009, 09:58
 
Fecha de Ingreso: febrero-2008
Ubicación: EH
Mensajes: 117
Antigüedad: 16 años, 2 meses
Puntos: 0
Exclamación Permite clicar dos veces en Guardar!!

Buenas,

En mi pagina tengo un FormView, y dentro de este un InsertItemTemplate con varios campos y un boton Guardar. Este botón lo tengo programado de forma que al clicarlo guarde un registro en la BD, el problema que tengo es que si le doy dos veces siguidos al boton intenta guardar dos registros en la BD. ¿Cómo puedo evitar que el usuario clique dos veces?

He intentado poner button1.disabled = true (javaScript) en el cliente, pero entonces no va al servidor.

¿conoceís alguna solución?
  #2 (permalink)  
Antiguo 11/05/2009, 10:11
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Permite clicar dos veces en Guardar!!

en el page load de tu pagina puedes poner esto:

boton.Attributes.Add("onclick", "this.disabled=true;" + GetPostBackEventReference(boton).ToString())

donde boton es el id del tu boton que usas para guardar los registros.
  #3 (permalink)  
Antiguo 12/05/2009, 00:44
 
Fecha de Ingreso: febrero-2008
Ubicación: EH
Mensajes: 117
Antigüedad: 16 años, 2 meses
Puntos: 0
Exclamación Respuesta: Permite clicar dos veces en Guardar!!

Muchas gracias Itzcoatl!

He probado tu solución y funciona, bueno me decia que esa función está obsoleta y que lo cambiase por esta otra pero si que funciona:

boton.Attributes.Add("onclick", "this.disabled=true;" + ClientScript.GetPostBackEventReference(boton, "").ToString())

Lo que pasa es que antes de guardar un registro hago unas validaciones en Js:

boton.Attributes.Add("onclick", "return ValidarCampos();")

Entonces pondría el disabled dentro de esta función pero, y el postback, ¿cómo lo hago?
  #4 (permalink)  
Antiguo 12/05/2009, 01:08
 
Fecha de Ingreso: febrero-2008
Ubicación: EH
Mensajes: 117
Antigüedad: 16 años, 2 meses
Puntos: 0
Exclamación Respuesta: Permite clicar dos veces en Guardar!!

Ya lo he resuelto, he escrito la siguiente función que hace un postback:

Código:
    Protected Sub RegistrarUsePostback_OnGuardar()
        Dim boton As Button
        boton = CType(Me.formvw.FindControl("butGuardar"), Button)

        Dim cbReference As String = Me.Page.ClientScript.GetPostBackEventReference(boton, "arg") & ";"
        Dim cbScript As String = " function UsePostback_OnGuardar(arg)" & _
        "{" & cbReference & ";" & "}"

        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "UsePostback_OnGuardar", cbScript, True)
    End Sub

Llamo a esta función para que cree el script en ejecución:
Código:
boton.Attributes.Add("onclick", "return ValidarCampos();")
RegistrarUsePostback_OnGuardar();

y en Js:

Código:
function ValidarCampos()
{
  ...
  if (ok)
  {
    document.getElementById(buttonId).disabled = true;
    UsePostback_OnGuardar(''); 
  }   
  return false; 
}
Y ya esta, problema resuelto,
gracias ltzcoatl!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:31.