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

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -