2010-09-21 6 views
0

Comment puis-je obtenir courant MainNavigationMenu hyprelink dans le code derrière et vérifier si le menu actuel est cliqué puis je vais le changer CSS par défaut.trouver l'élément actuel dans le répéteur

J'essaie avec ce code, mais est toujours nul

HyperLink mainNavigationMenu = siteMapAsBulletedList.FindControl("MainNavigationMenu") as HyperLink; 

code complet répéteur:

<asp:Repeater runat="server" ID="siteMapAsBulletedList" DataSourceID="smdsMenu"> 
         <HeaderTemplate> 
          <li><asp:HyperLink ID="MainNavigationMenu" runat="server" NavigateUrl='<%#SiteMap.RootNode.Url%>' 
           Text='<%#SiteMap.RootNode.Title%>'></asp:HyperLink></li>       
         </HeaderTemplate> 
         <ItemTemplate> 
          <li><asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Eval("Url")%>' Text='<%#Eval("Title")%>'></asp:HyperLink></li> 
         </ItemTemplate> 
         </asp:Repeater> 

Répondre

0

Est-ce que vous vérifiez quel type d'élément de répéteur vous regardez?

Attachez un ItemDataBound à votre répéteur et faire quelque chose comme ceci:

private void rptPanier_ItemDataBound(Object sender , RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Header) 
    { 
     var myItem = (Hyperlink)e.Item.FindControl("YourControlName"); 
    } 
} 

Ensuite, vous aurez une référence et vous pouvez faire ce que vous voulez! Attention, l'élément ItemData, qui peut être trouvé dans repeateritemeventargs, est toujours nul lorsque le répéteur crée l'en-tête.

Espérons que cela aide!

0

Le répéteur a une collection d'éléments. Chaque élément est un RepeaterItem, qui possède une propriété ItemType. Pour les éléments d'en-tête, cette valeur sera "ListItemType.Header". Par conséquent, vous souhaitez exécuter .FindControl() sur cet élément répéteur particulier, et non sur l'ensemble du répéteur lui-même.

Questions connexes