2012-06-11 11 views
5

In ASP.NET, mit VB, wie kann ich dies auf der Seite selbst tun, nicht im Code dahinter?Bedingte Logik in Repeater Control?

<ItemTemplate> 
    <% If Container.DataItem("filename") <> "" Then 
     <a href="/pdf/"><%# Container.DataItem("filename") %>Agenda</a> 
    End If%> 
</ItemTemplate> 
+0

Hat Ihr Beispiel funktioniert? – jrummell

+0

Nein, es funktioniert nicht. – lgriffin

+0

Großartig, wie geht das nicht? Erhalten Sie einen Kompilierungsfehler? eine Laufzeitausnahme? – jrummell

Antwort

4

Erstellen Sie eine boolesche Eigenschaft in Ihrer Datenquelle, z. für Ihre Hilfe Jungs

<ItemTemplate> 
    <% If Container.DataItem("filename") <> "" Then %> 
     <a href="/pdf/"><%# Container.DataItem("filename") %>Agenda</a> 
    <% End If %> 
</ItemTemplate> 
+0

Ok, das hat mich in die richtige Richtung weisen lassen, danke. – lgriffin

0

Sie vermissen öffnen und schließen Klammern für If und End If DataBind nutzen!

Auf der Seite:

<asp:Literal ID="ltPDF" runat="server" Visible='<%# showPDF(Container.DataItem("filename")) %>'>Test</asp:Literal> 

-Code hinter:

Function showPDF(ByVal pdf As String) As Boolean 
    If pdf <> "" Then 
     Return True 
    Else 
     Return False 
    End If 
End Function 
+0

Das ist ein Anfang in die richtige Richtung, aber ich bekomme es, wenn ich in einem Browser laufe: Compiler Fehlermeldung: BC30451: Name 'Container' ist nicht deklariert. – lgriffin

+0

Wenn ich mich recht erinnere, ist 'Container' nur verfügbar mit DataBinding-Syntax (' <%# %> '). Wenn ich recht habe (es ist schon eine Weile her, seit ich mit WebForms gearbeitet habe), geh mit Grahams Antwort. – jrummell

+0

Will, danke für deine Zeit. – lgriffin

1

landete mit diesem Dank an: filenameExists und diese gegen die Visible-Eigenschaft eines HyperLink

<asp:HyperLink runat="server" Visible='<%# Eval("filenameExists ") %>' NavigateUrl="/pdf/">Agenda</asp:HyperLink> 
Verwandte Themen