日期:2014-05-18  浏览次数:20436 次

如何实现动态导航栏-正在浏览的页面导航栏高亮?
菜单是用repeater,  

                    <div   id= "navigation ">
                              <ul>
                  <asp:Repeater   ID= "Repeater1 "   runat= "server ">
                  <ItemTemplate   >
                                    <li> <a   href   = ' <%#DataBinder.Eval(Container, "DataItem.Url ")%> '>   <%#DataBinder.Eval(Container, "DataItem.ClassName ")%> </a> </li>
                  </ItemTemplate>
                  </asp:Repeater>
                              </ul>
                  </div>

#navigation   ul   li   a#active   {
background:   url(../images/navigation-active.gif);
color:   #a21   !important;
font-weight:   bold;
}

如果在li加上id区分active的连接,但是因为是repearter,他把所有的菜单都repeat成同一个id,结果导致全部菜单都是高亮了。我要怎么控制只有当前浏览页菜单才高亮啊~

------解决方案--------------------
顶起,这个问题问得好,我也想知道。
不过用response.write来写肯定行。
------解决方案--------------------

你可以试试在菜单数据绑定时判断链接的页面是否本页页面名称。 是则为其设定CS。
------解决方案--------------------
睡了
你用CSS控制下
------解决方案--------------------
我有个思路,可以把所有可能变亮的区域都作成panel然后使用document.panel.style控制样式
------解决方案--------------------
<ul>
<asp:Repeater ID= "Repeater1 " runat= "server " OnDataBinding= "Repeater1_DataBinding ">
<ItemTemplate>
<li>
<asp:Panel ID= "panIndex " runat= "server ">
<a href= ' <%# DataBinder.Eval(Container, "DataItem.Url ") %> '>
<% #DataBinder.Eval(Container, "DataItem.ClassName ") %>
</a>
</asp:Panel>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>


protected void Repeater1_DataBinding(object sender, EventArgs e)
{
Panel myPan = (Panel)Repeater1.Items[(int)你想要高亮的行的索引].FindControl( "panIndex ");
myPan.CssClass = "active ";
}

然后active中扩展 <div> 中 <a> 的样式
------解决方案--------------------
这样应该也可以:
<asp:Repeater ID= "Repeater1 " runat= "server " OnPreRender= "Repeater1_PreRender ">
<ItemTemplate>
<asp:Literal ID= "Literal1 " runat= "server " Text= ' <%# formUrl(Eval( "Url "),Eval( "ClassName ")) %> '> </asp:Literal>
</ItemTemplate>