Unter ASP .net 2.0 ist es ja nur mit Umwegen möglich zwei Repeater zu verschachteln, wenn der zweite Repeater die Datenquelle per Eval() bekommen soll. Falls die Datenbindung nicht abgekapselt ist, konnte man auch DataBinder.Eval verwenden.

Nachdem ich mich in letzter Zeit mit LINQ beschäftigt habe und ziemlich begeistert bin, kämpfte ich heute den ganzen Nachmittag mit einem nervigen Problem herum: Die verknüpfte Tabelle lies sich auch mit LINQ nicht per Repeater anzeigen, auch nicht per DataBinder.Eval()

Schließlich fand ich über Mike Bosch die Lösung: Man muss in der LinqDataSource EnableUpdate auf true setzen!

Beispiel: Eine Postliste, die zuerst die Postdetails anzeigt und dann alle verknüpften Tags ausgibt.

<asp:LinqDataSource ID="BlogDataSource" runat="server" ContextTypeName="CmsDb" TableName="BlogPosts" AutoPage="true" OrderBy="PostId DESC" EnableUpdate="true" />
<asp:ListView runat="server" ID="PostList" DataSourceID="BlogDataSource">
    <LayoutTemplate>
        <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
    </LayoutTemplate>
    <ItemTemplate>
        <h2>
            <%#Eval("Title") %>
        </h2>
        <h3>
            <%#Eval("PostDate") %>
        </h3>
        <%# Eval("Text") %>
        <p>
            <asp:Repeater ID="nestedRepeater" runat="server" DataSource='<%# Eval("Tags") %>'>
                <ItemTemplate>
                    <%# Eval("Name") %></ItemTemplate>
            </asp:Repeater>
        </p>
    </ItemTemplate>
</asp:ListView>