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 :
Celui qui compte c'est le Case "dac". L'autre c'est pour les contrôles simples.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 :
txtACE étant l'ID de la TextBOx dans l'ASCX et rfvdacVille étant l'ID du RequestFieldValidator que j'essaie de placer.Impossible de trouver l'ID du contrôle 'txtACE' référencé par la propriété 'ControlToValidate' de 'rfvdacVille'.
Pouvez vous m'aider à plonger dans l'ASCX pour récupérer l'ID de la TexteBox ?
Partager