L'identifiant d'un contrôle pour un Validator
Salut tout le monde.
Je suis devant un souci sur lequel je comprends pas la logique.
J'ai fais un composant utilisateur pour gérer une TextBox autoComplete.
Voici le code HTML
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<%@ Control Language="VB" AutoEventWireup="false" CodeFile="DropDownAutoComplete.ascx.vb" Inherits="Composant_Integre_DropDownAutoComplete" %>
<asp:TextBox ID="txtACE" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender ID="ace" runat="server"
OnClientItemSelected="tbCity_ClientItemSelected"
TargetControlID="txtACE"
UseContextKey="True"
DelimiterCharacters=""
Enabled="True"
ServicePath="~/GMPhotoProfil.asmx"></ajaxToolkit:AutoCompleteExtender>
<script type="text/javascript"> var tbCity_ClientItemSelected = function(sender, e){$get('<%=hfRecupValu.ClientID %>').value = e.get_value(); }</script>
<asp:HiddenField ID="hfRecupValu" runat="server" /> |
Rien de bien transcendantal, en somme. Mais notez la textBox txtACE.
Ensuite dans une page je l'appelle comme suit :
Code:
1 2 3 4
|
<asp:TableCell ID="celVille">
<Composite:DropDownAutoComplete ID="rvVille" runat="server" />
</asp:TableCell> |
Dans une cellule puisque je monte mon formulaire dans une table. Encore une fois, rien de compliqué.
Et comme tout formulaire qui se respecte, je fais une validation. Je mets un RequiredFieldValidator. Mais il me dit qu'il le trouve pas.
Il faut que j'aille dans le composant utilisateur pour trouver la TextBox txtACE et valider son contenu. Pour ça j'utilise la méthode suivante :
Code:
1 2 3 4 5 6 7
|
With rfvVille
Logage(celVille.Controls(0).Controls(0).ClientID)
Dim t As TextBox = celVille.Controls(0).Controls(0)
Logage(t.UniqueID)
.ControlToValidate = t.UniqueID
End With |
J'emploi ma méthode logage pour trouver des infos.
La première me retourne
Citation:
ctl00_cphCentral_Onglets673_tcOnglet_tab672_ProfilMembre672_rvVille_txtACE
Le seconde me retourne
Citation:
ctl00$cphCentral$Onglets673$tcOnglet$tab672$ProfilMembre672$rvVille$txtACE
Tout ceci me parait toujours logique. Sauf que, au chargement de la page j'ai le message d'erreur suivant :
Citation:
Impossible de trouver l'ID du contrôle 'ctl00$cphCentral$Onglets673$tcOnglet$tab672$ProfilMembre672$rvVille$txtACE' référencé par la propriété 'ControlToValidate' de 'rfvVille'.
Et pareil en utilisant le ClientID ou l'ID tout court.
Du coup, je comprends pas pourquoi il ne plonge pas dans le composant utilisateur pour trouver la TextBox.
Vous avez une idée ?