c# - Hilighting the current page in an asp.net 3.5 master page -
in project master page contains repeater that's used menu xml file data source repeater.
<asp:repeater id="admin_menus" runat="server"> <headertemplate><div id="navmenu"><ul></headertemplate> <footertemplate>|</ul></div></footertemplate> <itemtemplate> |<li> <a href="<%# databinder.eval(container.dataitem, "url")%>" class="link6" id="<%# databinder.eval(container.dataitem, "id")%>"> <strong> <%# databinder.eval(container.dataitem, "title")%> </strong> </a> </li> </itemtemplate> </asp:repeater>
urls in xml file
<menuitems> <item id="1" url="employee.aspx" title="employee" description="employee" /> <item id="2" url="location.aspx" title="location" description="location" /> </menuitems>
here want change css style of current page in menu.
one solution can opt handle itemcreated
event of <asp:repeater>
control. need add event handler:
in .master markup:
<asp:repeater id="admin_menus" runat="server" onitemcreated="admin_menus_itemcreated"> <headertemplate> <div id="navmenu"> <ul> </headertemplate> <footertemplate> |</ul></div></footertemplate> <itemtemplate> |<li runat="server" id="hyperlink"><a href="<%# databinder.eval(container.dataitem, "url")%>" class="link6" id="<%# databinder.eval(container.dataitem, "id")%>"> <strong> <%# databinder.eval(container.dataitem, "title")%></strong> </a></li> </itemtemplate> </asp:repeater>
in .master.cs codebehind:
protected void admin_menus_itemcreated(object sender, repeateritemeventargs e) { // ensure itemcreated not null, first 1 (header?) gets // returned null if (e.item.dataitem != null) { // extract "url" attribute xml that's being used // databinding particular row, via casting down // ixpathnavigable concrete type of e.item.dataitem isn't available // us. var currenturl = ((ixpathnavigable)e.item.dataitem).createnavigator().getattribute("url", ""); if (request.url.pathandquery.contains(currenturl)) { // adds background color of "red" selected // menu item. entirely var hyperlink = (htmlgenericcontrol) e.item.findcontrol("hyperlink"); hyperlink.style.add(htmltextwriterstyle.backgroundcolor, "red"); } } }
note i've added runat="server"
id="hyperlink"
<li>
tag in itemtemplate code in itemcreated handler can find style it.
Comments
Post a Comment