Comment puis-je cacher un répéteur ASP.NET C# si la source de données contient pas d'éléments?

J'ai un ASP.NET page qui utilise un répéteur imbriqué dans un autre répéteur pour créer une liste de données. C'est à l'effet suivant:

<asp:Repeater>
    <ItemTemplate>
        <span><%#Eval("Data1") %></span>
        <!-- and many more -->
        <asp:Repeater DataSource='<%#Eval("Data2")%>'>
            <HeaderTemplate>
                <ul>
            </HeaderTemplate>
            <ItemTemplate>
                <li><%#Container.DataItem%></li>
            </ItemTemplate>
            <FooterTemplate>
                </ul>
            </FooterTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

Dans l' (C#), le code-behind, je suis à la base à l'aide de LINQ pour extraire une liste d'informations à partir d'un document XML et de lier l'information à la première répétition.

La recherche de la réponse à cette question, il semble que la méthode est de déterminer si les données pour la imbriquée répéteur est vide. Si c'est le cas, vous définissez la visibilité de la répétition de faux.

Malheureusement, je n'ai pas été en mesure de déterminer comment le faire en ligne, et non pas dans le code-behind (car il ne fonctionnera pas nécessairement pour ce que je fais).

Depuis mes pages ne sont pas de la validation de maintenant, parce que l'ul finit par être vide pour les éléments sans Data2, et parce que je tiens à conserver à l'aide d'une liste non ordonnée, je sollicite votre aide.

Des idées?

Merci!

Mise à JOUR:

Si cela peut aider, car il pourrait très bien être possible de le faire dans le code-behind, LINQ est quelque chose à cet effet:

var x = from y in z
    select new {
        Data1 = d,
        //etcetera
        Data2 = (from j in k
            where j.Value != String.Empty
            select j.Value).ToList()
    };

blah.DataSource = x;
blah.DataBind();

OriginalL'auteur James Skemp | 2008-11-29