Nested Repeaters in ASP.NET

I’ve found that the simplest way to do nested repeaters without worrying about databinding events is to just set the DataSource using <%# %> syntax. For example: <asp:Repeater runat=”server” id=”Departments”> <ItemTemplate> Name: <%# Eval(“DeptName”) %> Employees: <asp:Repeater runat=”server” DataSource=”<%# Eval(“Employees”) %>”> <ItemTemplate><%# Eval(“Name”) %></ItemTemplate> <SeparatorTemplate>,</SeparatorTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater> This is presuming that your Departments class … Read more

How to find controls in a repeater header or footer

As noted in the comments, this only works AFTER you’ve DataBound your repeater. To find a control in the header: lblControl = repeater1.Controls[0].Controls[0].FindControl(“lblControl”); To find a control in the footer: lblControl = repeater1.Controls[repeater1.Controls.Count – 1].Controls[0].FindControl(“lblControl”); With extension methods public static class RepeaterExtensionMethods { public static Control FindControlInHeader(this Repeater repeater, string controlName) { return repeater.Controls[0].Controls[0].FindControl(controlName); } … Read more

Repeater in Repeater

In the parent repeater, attach a method to the OnItemDataBound event and in the method, find the nested repeater and data bind it. Example (.aspx): <asp:Repeater ID=”ParentRepeater” runat=”server” OnItemDataBound=”ItemBound”> <ItemTemplate> <!– Repeated data –> <asp:Repeater ID=”ChildRepeater” runat=”server”> <ItemTemplate> <!– Nested repeated data –> </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater> Example (.cs): protected void Page_Load(object sender, EventArgs e) … Read more