You can use the generic Tuple type for the internal repeater and pass the element from the external repeater:
<asp:Repeater ItemType="A" runat="server" ID="Rpt"> <ItemTemplate> <asp:Label Text="<%# Item.Property1 %>" runat="server" /> <asp:Repeater runat="server" DataSource="<%# Item.Property3.Select(innerItem => new Tuple<A,B>(Item, innerItem)) %>" ItemType="System.Tuple<A,B>"> <ItemTemplate> <asp:Label Text="<%# Item.Item2.Property4 %>" runat="server" /> </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater>
Remember that ReSharper will protest against the use of generics in ItemType!
Here is another example, closer to something I was working on:
<asp:Repeater runat="server" ID="RptWeekNumbers" ItemType="System.Int32"> <ItemTemplate> <asp:Repeater runat="server" DataSource="<%# Enumerable.Range(1, 5).Select(day => new Tuple<int,int>(Item, day))%>" ItemType="System.Tuple<int,int>"> <ItemTemplate> WeekNumber: <%# Item.Item1 %>, DayNumber: <%# Item.Item2 %> <br /> </ItemTemplate> </asp:Repeater> </ItemTemplate> </asp:Repeater>
andersh
source share