Skip to content

Instantly share code, notes, and snippets.

@RyanABailey
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save RyanABailey/0c3239423e7489dd64b3 to your computer and use it in GitHub Desktop.

Select an option

Save RyanABailey/0c3239423e7489dd64b3 to your computer and use it in GitHub Desktop.
Menu
protected void rptMenuParent_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
var row = (TopMenu)e.Item.DataItem;
Repeater nestedRepeater = e.Item.FindControl("rptMenuChild") as Repeater;
nestedRepeater.DataSource = row.Children;
nestedRepeater.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
var menuItems = new List<TopMenuItem>();
// add menu items
rptMenuParent.DataSource = menuItems;
rptMenuParent.DataBind();
}
public class TopMenu
{
public MenuItem Parent { get; set; }
public List<MenuItem> Children { get; set; }
}
public class MenuItem
{
public string Link { get; set; }
public string Text { get; set; }
}
<ul id="menu-header" class="menu">
<asp:Repeater ID="rptMenuParent" runat="server" OnItemDataBound="rptMenuParent_OnItemDataBound">
<itemtemplate>
<li class="menu-item">
<a href="<%# Eval("Parent.Link") %>"><%# Eval("Parent.Text") %></a>
<asp:Repeater ID="rptMenuChild" runat="server">
<HeaderTemplate><ul class="sub-menu"></HeaderTemplate>
<itemtemplate>
<li class="menu-item">
<a href="<%# Eval("Link") %>"><%# Eval("Text") %></a>
</li>
</itemtemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
</li>
</itemtemplate>
</asp:Repeater>
</ul>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment