2012-06-11 17 views
5

En ASP.NET, usando VB, ¿cómo puedo hacer esto en la página, no en el código?¿Lógica condicional dentro del control de repetidor?

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

¿Funciona su ejemplo? – jrummell

+0

No, no funciona. – lgriffin

+0

Genial, ¿cómo no funciona? ¿Obtiene un error de compilación? una excepción de tiempo de ejecución? – jrummell

Respuesta

4

Cree una propiedad booleana en su fuente de datos, p. filenameExists y usar esto para databind contra la propiedad visible de un hiperenlace

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

Ok, esto me hizo apuntar en la dirección correcta, gracias. – lgriffin

0

se echa en falta entre paréntesis de apertura y cierre para If y End If:

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

Eso es un comienzo en la dirección correcta, pero estoy obteniendo esto cuando se ejecuta en un navegador: Mensaje de error del compilador: BC30451: El nombre 'Contenedor' no está declarado. – lgriffin

+0

Si mal no recuerdo, 'Container' solo está disponible con la sintaxis DataBinding (' <%# %> '). Si estoy en lo correcto (ha pasado un tiempo desde que trabajé con WebForms), ve con la respuesta de Graham. – jrummell

+0

Lo haré, gracias por su tiempo. – lgriffin

1

terminamos usando esto, gracias por su ayuda chicos!

En la página:

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

Código atrás:

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