Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/08/2007, 01:34
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 2 meses
Puntos: 4
Re: Evitar Doble Submit (Doble click) sobre un boton ASP.NET

Entiendo. El control RequiredFieldValidator genera código Javascript en la página. Deberías ver cuál es el código generado para intentar interactuar con él tras el evento onClick del botón.

Si tengo un ratito intento mirarlo a ver si te puedo echar una mano, y ya de paso, me sirve a mí también.

Por cierto, hace poco estuve practicando con un control personalizado que contenía un botón que al presionar se deshabilitaba y en su lugar aparecía un imagen animada de progreso o de espera. Puede que te oriente en algo. Ojo, no está muy revisado su funcionamiento.

Código:
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls

Public Class controlBotonProgreso
    : Inherits Control : Implements INamingContainer

    Private IDControl As String = "ControlProgreso"
    Private _Boton As Button
    Private _TextoEtiqueta As String
    Private _RutaImg As String

    Public Event Click(ByVal sender As Object, ByVal e As EventArgs)
    Protected Sub OnClick(ByVal e As EventArgs)
        RaiseEvent Click(Me, e)
    End Sub


    <Browsable(True), _
    Category("Controles secundarios"), _
    Description("Botón")> _
    Public ReadOnly Property Boton() As Button
        Get
            Return CType(Me.FindControl("btn"), Button)
        End Get
    End Property
    <Browsable(True), _
    Category("Controles secundarios"), _
    Description("Imagen")> _
    Public ReadOnly Property Imagen() As Image
        Get
            Return CType(Me.FindControl("img"), Image)
        End Get
    End Property
    <Browsable(True), _
    Category("Controles secundarios"), _
    Description("Ruta de la imagen")> _
    Public Property RutaImg() As String
        Get
            Return _RutaImg
        End Get
        Set(ByVal Value As String)
            _RutaImg = Value
        End Set
    End Property
    <Browsable(True), _
    Category("Controles secundarios"), _
    Description("Texto de la etiqueta de progreso")> _
    Public Property TextoEtiqueta() As String
        Get
            Return _TextoEtiqueta
        End Get
        Set(ByVal Value As String)
            _TextoEtiqueta = Value
        End Set
    End Property

    Protected Overrides Sub CreateChildControls()
        Dim btn As New Button
        btn.ID = "btn"
        AddHandler btn.Click, AddressOf btn_Click
        Dim img As New Image
        img.ID = "img"
        'img.ImageUrl = RutaImg
        Dim lbl As New Label
        lbl.ID = "lbl"
        lbl.Text = TextoEtiqueta

        Dim sbScript As New System.Text.StringBuilder
        sbScript.Append("<script language='javascript'>" & vbCrLf)
        sbScript.Append("function progreso() {" & vbCrLf)
        sbScript.Append("document.getElementById('" & Me.ClientID & "_btn').style.display = 'none';" & vbCrLf)
        sbScript.Append("document.getElementById('" & Me.ClientID & "_img').style.display = '';" & vbCrLf)
        sbScript.Append("document.getElementById('" & Me.ClientID & "_lbl').style.display = '';" & vbCrLf)
        sbScript.Append("}" & vbCrLf)
        sbScript.Append("</script>" & vbCrLf)
        Me.Controls.Add(New LiteralControl(sbScript.ToString))

        Me.Controls.Add(btn)
        Me.Controls.Add(New LiteralControl("&nbsp;"))
        Me.Controls.Add(img)
        Me.Controls.Add(New LiteralControl("&nbsp;"))
        Me.Controls.Add(lbl)
        btn.Style.Add("DISPLAY", "")
        btn.Attributes.Add("onClick", "progreso()")
        img.Style.Add("DISPLAY", "none")
        lbl.Style.Add("DISPLAY", "none")

    End Sub
Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!