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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
ctl00_cphCentral_Onglets673_tcOnglet_tab672_ProfilMembre672_rvVille_txtACE
Le seconde me retourne
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 :
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 ?