首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么实现动态导航栏-正在浏览的页面导航栏高亮

2012-02-23 
如何实现动态导航栏-正在浏览的页面导航栏高亮?菜单是用repeater,divid navigation ulasp:Repeate

如何实现动态导航栏-正在浏览的页面导航栏高亮?
菜单是用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>


</asp:Repeater>

public string formUrl(object Url, object ClassName)
{
string curPageName = HttpContext.Current.Request.Url.Segments[HttpContext.Current.Request.Url.Segments.Length - 1];
if (Url.ToString().ToLower() == curPageName.ToLower())
{
return " <li> <a href=\ " " + Url.ToString() + "\ "> <font color=\ "red\ "> " + ClassName.ToString() + " </font> </a> ";
}
else
{
return " <li> <a href=\ " " + Url.ToString() + "\ "> " + ClassName.ToString() + " </a> ";
}
}
[解决办法]
Repeater 方式来做 较麻烦 没有尝试过 不过应该是有方法的

我想如果一定要这样做 你试试

<li id= "唯一 ">

<a id= "唯一 " href = ' <%#DataBinder.Eval(Container, "DataItem.Url ")%> '> <%#DataBinder.Eval(Container, "DataItem.ClassName ")%> </a>
生成一个唯一的标识 根据标识用css控制是否高亮
如果你是直接在页面中这样绑定的话比较难做到 生成唯一标识 建议:写一个cs类在类中指定
<ItemTemplate >
<li> <a href = ' <%#DataBinder.Eval(Container, "DataItem.Url ")%> '> <%#DataBinder.Eval(Container, "DataItem.ClassName ")%> </a> </li>
</ItemTemplate>
这段代码 这样就可以生成一个唯一的标识了

热点排行