2009-06-08 7 views
1

Dans mon ListView, je souhaite utiliser une propriété du conteneur dans une instruction if sur la page aspx, comme illustré ci-dessous. Mais je reçois une erreur "Le nom 'Conteneur' n'existe pas dans le contexte actuel". Puis-je pas le conteneur dans une instruction if?ASP.NET Utilisation de l'instruction If avec conteneur dans une vue de liste

<ItemTemplate> 
     <tr> 
      <td> 
      <% if (EDIT_INDEX == (((ListViewItem)Container) as ListViewDataItem).DataItemIndex) 
       {%> 
      <span id="row<%#(((ListViewItem)Container) as ListViewDataItem).DataItemIndex %>" 
Some Stuff 
     </span> 
<% } %> 

Répondre

8

Container est disponible uniquement dans les expressions de liaison. Utilisez un bloc <%# .. %> avec l'opérateur ternaire (?:) et la concaténation de chaîne pour obtenir la même chose.

Une autre solution que j'ai utilisée est de mettre des choses dans différents contrôles <asp:Placeholder> dont Visible propriétés sont liées à différentes expressions booléennes et mettre les différentes représentations possibles à l'intérieur de ces espaces réservés. Quelque chose comme:

<ItemTemplate> 
    <tr> 
     <td> 
    <asp:Placeholder runat="server" 
    Visible='<%# EDIT_INDEX == (((ListViewItem)Container) as ListViewDataItem).DataItemIndex %>'> 
     <span id='row<%#(((ListViewItem)Container) as ListViewDataItem).DataItemIndex %>'> 
      Some Stuff 
     </span> 
    </asp:Placeholder> 
+0

Je suis d'accord avec la même ... –

Questions connexes