如何在代码中获取当前的MainNavigationMenu hyprelink并检查当前菜单是否单击,然后我将更改他的默认CSS。
我尝试使用此代码,但始终为null
HyperLink mainNavigationMenu = siteMapAsBulletedList.FindControl("MainNavigationMenu") as HyperLink;
完整转发器代码:
<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>
答案 0 :(得分:0)
转发器有一个项目集合。每个Item都是RepeaterItem,它具有ItemType属性。对于标题项,此值将为“ListItemType.Header”。因此,您希望对该特定转发器项执行.FindControl(),而不是整个Repeater本身。
答案 1 :(得分:0)
您在验证您正在查看哪种类型的转发器项目吗?
将ItemDataBound附加到转发器并执行以下操作:
private void rptPanier_ItemDataBound(Object sender , RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
var myItem = (Hyperlink)e.Item.FindControl("YourControlName");
}
}
然后你会有一个参考,你可以做任何你想做的事! 请注意,当转发器创建标头时,可以在repeateritemeventargs中找到的ItemData项始终为空。
希望这有帮助!