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(" "))
Me.Controls.Add(img)
Me.Controls.Add(New LiteralControl(" "))
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.