2015-03-16 1 views
1

J'ai un répéteur qui affiche une liste à deux niveaux:Comment mettre une instruction 'if' dans un répéteur ItemTemplate pour déterminer si une propriété de liste DataItem est vide?

<ul> 
    <asp:Repeater ID="MenuRepeater" runat="server" OnItemDataBound="MenuRepeater_ItemDataBound"> 
     <ItemTemplate> 
      <li <%# (Container.DataItem as LinkData).Class %>> 
       <asp:HyperLink ID="MenuHyperLink" runat="server"> 

       </asp:HyperLink> 
        <ul> 
        <asp:Repeater DataSource='<%# DataBinder.Eval(Container.DataItem, "SubLinks") %>' runat="server"> 
         <ItemTemplate> 
          <li <%# (Container.DataItem as LinkData).Class %>> 
           <a href='<%# DataBinder.Eval(Container.DataItem, "Link") %>'><%# DataBinder.Eval(Container.DataItem, "Text") %></a> 
          </li> 
         </ItemTemplate> 

        </asp:Repeater> 
       </ul> 
      </li> 
     </ItemTemplate> 
    </asp:Repeater> 

</ul> 

Cela fonctionne très bien, mais je veux faire les listes imbriquées extensible et peut être caché. Je veux ajouter une icône aux éléments de la liste externe qui affiche un signe plus quand "SubLinks" n'est pas une liste vide, mais je ne suis pas sûr de savoir comment faire cette déclaration conditionnelle dans le répéteur. Je pensais pouvoir faire quelque chose comme ça, mais ça ne marche pas.

<%# (DataBinder.Eval(Container.DataItem, "SubLinks").Any() ?? "<i class="fa fa-plus"></i>") %> 

Répondre

0

essayer cette

<% if (true) %> 
<%{%> 
    <li > ---------</li> 
<%} else 
    {%> 
    <li > ---------</li> 
<%}%> 
+0

mais comment puis-je mettre Container.DataItem.SubLinks.Any() dans la région (vrai)? –

+0

Une explication du code, en particulier par rapport à la question originale, est toujours bienvenue et encouragée sur Stack Overflow. –