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
Rien de bien transcendantal, en somme. Mais notez la textBox txtACE.
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" />
Ensuite dans une page je l'appelle comme suit :
Dans une cellule puisque je monte mon formulaire dans une table. Encore une fois, rien de compliqué.
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>
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 :
J'emploi ma méthode logage pour trouver des infos.
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
La première me retourneLe seconde me retournectl00_cphCentral_Onglets673_tcOnglet_tab672_ProfilMembre672_rvVille_txtACETout ceci me parait toujours logique. Sauf que, au chargement de la page j'ai le message d'erreur suivant :ctl00$cphCentral$Onglets673$tcOnglet$tab672$ProfilMembre672$rvVille$txtACE
Et pareil en utilisant le ClientID ou l'ID tout court.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'.
Du coup, je comprends pas pourquoi il ne plonge pas dans le composant utilisateur pour trouver la TextBox.
Vous avez une idée ?
Partager