Comment accéder aux contrôles dans le modèle de mise en page de ListView ?

StackOverflow https://stackoverflow.com/questions/48616

  •  09-06-2019
  •  | 
  •  

Question

Comment définir une propriété d'un contrôle utilisateur dans ListViewc'est LayoutTemplate du code-behind ?

<asp:ListView ...>
<LayoutTemplate>
<myprefix:MyControl id="myControl" ... />
</LayoutTemplate>
...
</asp:ListView>

Je veux faire ça:

myControl.SomeProperty = somevalue;

Veuillez noter que mon contrôle n'est pas activé ItemTemplate, c'est dedans LayoutTemplate, il n'existe donc pas pour tous les éléments, il n'existe qu'une seule fois.Je devrais donc pouvoir y accéder une fois, pas pour chaque élément lié aux données.

Était-ce utile?

La solution

Pour définir une propriété d'un contrôle qui se trouve à l'intérieur du LayoutTemplate, utilisez simplement la méthode FindControl sur le contrôle ListView.

var control = (MyControl)myListView.FindControl("myControlId");

Autres conseils

var control = (MyControl)myListView.FindControl("myControlId");

Cela fonctionnera, mais assurez-vous de le faire après la liaison des données, sinon le LayoutTemplate n'aura pas été créé, générant ainsi une erreur.

Utilisez le RechercherContrôle méthode sur chaque ListViewItem.

var control = (MyControl)Item.FindControl("yourControlId");

Cela a été répondu dans cette question Stack Overflow :
Accéder à un contrôle à l'intérieur du LayoutTemplate d'un ListView

Voir le commentaire sur la réponse acceptée par Tanathos.

Je sais que cela a été demandé il y a plus d'un an, mais c'est l'un des premiers résultats pour le terme de recherche que j'obtenais ici, donc je voulais laisser la réponse à toute autre personne qui serait tombée dessus.

La mise en page est créée et déclenche un événement LayoutCreated qui indique que la mise en page a été créée dans le système.

Ensuite, vous pouvez utiliser listview.FindControl pour obtenir une référence à ce contrôle.

Si vous avez besoin de la version VB.net, la voici :

Dim control = CType(myListView.FindControl("myControlId"), MyControl)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top