2009-08-16 7 views
2

Si j'ai une étiquette et une zone de texte et une étiquetteAccès à une étiquette d'une zone de texte par AssociatedControlID

<asp:Label ID="Label1" runat="server" Text="Name" AssociatedControlID="txtName"></asp:Label> 
<asp:TextBox ID="txtName" runat="server" CssClass="textbox"></asp:TextBox> 

De code-behind, est-il posible pour accéder aux commandes de cette liste la zone de texte comme un contrôle associé.

Répondre

3

C'est possible, mais probablement pas aussi facile que vous le souhaitez. Il n'y a aucune collection n'importe où qui dit "ce sont tous les contrôles avec cette valeur AssociatedControlID". Vous devez loop over all the controls in the page recursively et vérifiez la propriété AssociatedControlID s'il s'agit d'une étiquette.

Qu'essayez-vous d'accomplir? Je sais que vous avez spécifiquement demandé de faire du code-behind, mais si le résultat final est que vous essayez de manipuler l'interface utilisateur, j'envisagerais d'utiliser jQuery, car avec une seule ligne de javascript vous seriez capable de sélectionner tous les éléments sur la page qui avait for = "txtName".

0

Vous pouvez le faire en utilisant LINQ.

var label = Page.Controls 
       .Cast<Control>() 
       .SingleOrDefault(c => c.GetType() == typeof(Label) && 
             ((Label)c).AssociatedControlID == "txtName"); 

Si vous avez plusieurs contrôles associés à cette zone de texte particulier, utilisez Where() au lieu de SingleOrDefault().

Questions connexes