2008-09-07 6 views
12

Comment définir une propriété d'un contrôle utilisateur dans ListViewLayoutTemplate à partir du code-behind?Comment accéder aux contrôles dans le layouttemplate de listview?

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

Je veux faire:

myControl.SomeProperty = somevalue; 

S'il vous plaît noter que mon contrôle est pas ItemTemplate, il est en LayoutTemplate, donc il n'existe pas pour tous les articles, il existe une seule fois. Je devrais donc pouvoir y accéder une fois, pas pour chaque élément lié aux données.

Répondre

12

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

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

Utilisez la méthode FindControl sur chaque ListViewItem.

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

Cela a été répondu à cette question Stack Overflow:
Access a control inside a the LayoutTemplate of a 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 je recevais ici, donc je voulais laisser la réponse à quelqu'un d'autre qui tombait dessus.

0

La mise en page est créée et déclenche un événement LayoutCreated indiquant 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.

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

Cela fonctionne, mais assurez-vous le faire après la liaison de données ou LayoutTemplate ne pas avoir été créé en jetant ainsi une erreur.

Questions connexes