2012-06-11 17 views
5

In ASP.NET, utilizzando VB, come posso farlo nella pagina stessa, non nel codice sottostante?Logica condizionale all'interno del controllo ripetitore?

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

funziona il vostro esempio funziona? – jrummell

+0

No, non funziona. – lgriffin

+0

Ottimo, come funziona? Hai un errore di compilazione? un'eccezione di runtime? – jrummell

risposta

4

Creare una proprietà booleana nell'origine dati ad es. filenameExists e usare questo per DataBind contro la proprietà Visible di un collegamento ipertestuale

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

Ok questo mi ha fatto puntare nella giusta direzione, grazie. – lgriffin

0

vi manca parentesi di apertura e chiusura per If e End If:

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

Questo è un inizio nella giusta direzione, ma sto ricevendo questo quando si esegue in un browser: Compilatore Messaggio di errore: BC30451: Nome 'Contenitore' non è dichiarato. – lgriffin

+0

Se ricordo bene, 'Container' è disponibile solo con la sintassi DataBinding (' <%# %> '). Se ho ragione (è passato un po 'di tempo da quando ho lavorato con WebForms), segui la risposta di Graham. – jrummell

+0

Lo farò, grazie per il tuo tempo. – lgriffin

1

finito per usare questo, grazie per il vostro aiuto ragazzi!

Nella pagina:

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

codice dietro:

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