Mam stronę ASP.NET, która używa repeatera zagnieżdżonego w innym repeater w celu wygenerowania listy danych. To w ten sposób z następujących powodów:Jak ukryć repeater w ASP.NET C#, jeśli DataSource nie zawiera żadnych elementów?
<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>
W (C#) kodu źródłowego Ja w zasadzie za pomocą LINQ ciągnąć listę informacji z dokumentu XML i powiązać te informacje do pierwszego repeater.
Szukając odpowiedzi na to pytanie, wydaje się, że metodą jest ustalenie, czy dane dla zagnieżdżonego przemiennika są puste. Jeśli tak, ustaw widoczność wzmacniacza na wartość false.
Niestety, nie byłem w stanie określić, jak to zrobić, a nie w kodzie źródłowym (ponieważ niekoniecznie będzie to działało dla tego, co robię).
Ponieważ moje strony nie sprawdzają teraz, ponieważ ul kończy się być pusty dla jakichkolwiek elementów bez Data2, a ponieważ chciałbym nadal używać nieuporządkowanej listy, szukam twojej pomocy.
Wszelkie pomysły?
Dzięki!
UPDATE:
Jeśli to nie pomaga, ponieważ może to równie dobrze być możliwe do wykonania w kodzie-tyłu, LINQ jest coś w tej sprawie:
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();
To w opóźnieniem kodu ... Nie „inline” jak poprosił. Już miałem powiedzieć to samo, a potem czytałem trochę bliżej :) –
Jeśli jest to możliwe, dodałem LINQ do pierwotnego pytania. –