Accéder à un contrôle dans un ASCX
Bonjour
Je suis confronté à un souci d'accès à un contrôle pour mettre en place une Validator. Dans mon système j'utilise des ASCX. Là, j'en ai fais un qui me permet de mettre en place une AutoCompleteExtender. Donc il y a une TextBox dans l'ASCX.
Cet ASCX est palcé dans une cellule d'une table. Dans la cellule d'à côté je mets (enfin je tente) un Validator et comme tout validator il veut un ControleToCompare, sous la forme de l'ID.
Dans ma classe externe de création des contrôles des champs de mes formulaires (heu oui, je me suis amusé à faire ça, c'est super souple pour fabriquer des formulaires à a volée ! ) je récupère bien cette TextBox, de cette manière :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
Public Shared Sub AjouterValidator(ByVal rqDefinitionChamp As String, ByRef cellVal As TableCell)
Dim dtDefinitionChamp As DataTable = New DManager("DataDev").RetournerTable(rqDefinitionChamp)
If dtDefinitionChamp.Rows(0).Item("Obligatoire") = 1 Then
Select Case dtDefinitionChamp.Rows(0).Item("Type_Champ")
Case "dac"
Dim r As TableRow = cellVal.Parent
Dim t As TextBox = r.Cells(1).Controls(0).Controls(0).Controls(0)
Dim rfv As New RequiredFieldValidator
With rfv
.ID = "rfv" & dtDefinitionChamp.Rows(0).Item("Type_Champ") & dtDefinitionChamp.Rows(0).Item("Nom_Champ")
.ErrorMessage = "Ce champ est obligatoire"
.ControlToValidate = t.ID
End With
cellVal.Controls.Add(rfv)
Case Else
Dim rfv As New RequiredFieldValidator
With rfv
.ID = "rfv" & dtDefinitionChamp.Rows(0).Item("Type_Champ") & dtDefinitionChamp.Rows(0).Item("Nom_Champ")
.ErrorMessage = "Ce champ est obligatoire"
.ControlToValidate = dtDefinitionChamp.Rows(0).Item("Type_Champ") & dtDefinitionChamp.Rows(0).Item("Nom_Champ")
End With
cellVal.Controls.Add(rfv)
End Select
End If
End Sub |
Celui qui compte c'est le Case "dac". L'autre c'est pour les contrôles simples.
Mais lorsque je lui mets le t.ID, ben il trouve pas le contrôle et me mets son bien heureux mesasge trés clair :
Citation:
Impossible de trouver l'ID du contrôle 'txtACE' référencé par la propriété 'ControlToValidate' de 'rfvdacVille'.
txtACE étant l'ID de la TextBOx dans l'ASCX et rfvdacVille étant l'ID du RequestFieldValidator que j'essaie de placer.
Pouvez vous m'aider à plonger dans l'ASCX pour récupérer l'ID de la TexteBox ?