2010-08-11 4 views
0

Comment vérifier si un champ n'est pas vide et afficher un lien?
J'ai essayé quelque chose comme ça mais j'ai une erreur.problème listview

<asp:ListView ID="ListView1" runat="server"> 
<LayoutTemplate> 
    <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> 
</LayoutTemplate> 
<ItemTemplate> 
    <h2><%#Eval("NC_Title") %></h2> 
    <%#Eval("NC_StartDate") %> 
    <p><%#Eval("NC_Abstract") %></p> 
    <%if(Eval("NC_Description").ToString().Length > 0) 
     { 
      %><a href="">Read more...</a><% 
     }%> 

</ItemTemplate> 
</asp:ListView> 
+1

Quelle erreur avez-vous eu? –

+0

System.InvalidOperationException n'a pas été gérée par le code utilisateur Message = Les méthodes de liaison de données telles que Eval(), XPath() et Bind() ne peuvent être utilisées que dans le contexte d'un contrôle de base de données. quand j'ai essayé d'utiliser l'exemple en réponse ci-dessous, il est un travail Read more... mais je ne veux pas voir le contrôle asp.net ID dans la source :) – eyalb

Répondre

2

Sinon, vous pouvez mettre l'ensemble lien dans la liaison de données:

<asp:ListView ID="ListView1" runat="server"> 
<LayoutTemplate> 
    <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> 
</LayoutTemplate> 
<ItemTemplate> 
    <h2><%#Eval("NC_Title") %></h2> 
    <%#Eval("NC_StartDate") %> 
    <p><%#Eval("NC_Abstract") %></p> 
    <%# !string.IsNullOrEmpty(Eval("NC_Description") as string) ? "<a href=\"\">Read more...</a>" : string.Empty %> 
</ItemTemplate> 
</asp:ListView> 
0

Votre NC_Description est probablement nul. Dans ce cas, lorsque vous essayez d'appeler la méthode ToString à partir d'un objet nul, cela vous donne NullReferenceException. Essayez de changer comme ceci:

<asp:ListView ID="ListView1" runat="server"> 
<LayoutTemplate> 
    <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> 
</LayoutTemplate> 
<ItemTemplate> 
    <h2><%#Eval("NC_Title") %></h2> 
    <%#Eval("NC_StartDate") %> 
    <p><%#Eval("NC_Abstract") %></p> 
    <%if(!string.IsNullOrEmpty(Eval("NC_Description") as string)) 
     { 
      %><a href="">Read more...</a><% 
     }%> 

</ItemTemplate> 
</asp:ListView> 
1

Vous pouvez faire le lien d'un contrôle « en savoir plus », et le lier sa visibilité (c.-à ajouter runat="server".):

<asp:ListView ID="ListView1" runat="server"> 
<LayoutTemplate> 
    <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> 
</LayoutTemplate> 
<ItemTemplate> 
    <h2><%#Eval("NC_Title") %></h2> 
    <%#Eval("NC_StartDate") %> 
    <p><%#Eval("NC_Abstract") %></p> 
    <a href="" runat="server" Visible='<%# !string.IsNullOrEmpty(Eval("NC_Description") as string) %>'>Read more...</a> 
</ItemTemplate> 
</asp:ListView> 
+0

c'est un travail mais je preffer d'utiliser le lien simple sans serveur runat . – eyalb

+0

oui, mais vous essayez de mélanger des blocs de script avec la liaison de données, et il est fort probable que cela ne fonctionnera pas. en plus de mettre runat = "server" sur le lien crée seulement un contrôle littéral et vous ne recevrez pas de balisage supplémentaire rendu (non?) – veggerby

Questions connexes