2012-06-11 18 views
5

W ASP.NET, używając VB, jak mogę to zrobić na samej stronie, a nie w kodzie?Logika warunkowa w sterowaniu repeterem?

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

Czy Twój przykład działa? – jrummell

+0

Nie, to nie działa. – lgriffin

+0

Świetnie, jak to nie działa? Czy pojawia się błąd kompilacji? wyjątek środowiska wykonawczego? – jrummell

Odpowiedz

4

Utwórz właściwość boolowską w swoim źródle danych, np. filenameExists i wykorzystać to do databind przeciwko właściwości Visible hiperłącze

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

Ok, dzięki temu mnie wskazano we właściwym kierunku. – lgriffin

0

brakuje otwartych i zamknij uchwyty do If i End If:

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

To jest początek we właściwym kierunku, ale otrzymuję to podczas działania w przeglądarce: Komunikat o błędzie kompilatora: BC30451: Nazwa "Kontener" nie jest zadeklarowana. – lgriffin

+0

Jeśli dobrze pamiętam, 'Container' jest dostępny tylko ze składnią DataBinding (' <%# %> '). Jeśli mam rację (minęło trochę czasu odkąd pracowałem z WebForms), idź z odpowiedzią Grahama. – jrummell

+0

Zrobię to, dziękuję za poświęcony czas. – lgriffin

1

skończyło się to, dzięki za pomoc chłopaki!

Na stronie:

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

Kod za:

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