2012-06-11 70 views
5

在ASP.NET中,使用VB,我怎麼能在頁面本身做到這一點,而不是在代碼後面?Repeater控制內的條件邏輯?

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

貴例如工作嗎? – jrummell

+0

不,它不起作用。 – lgriffin

+0

太棒了,它不起作用?你有編譯錯誤嗎?運行時異常? – jrummell

回答

4

在您的數據源中創建一個布爾屬性,例如filenameExists並使用此數據綁定對超鏈接

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

好的,這讓我指出了正確的方向,謝謝。 – lgriffin

0

你缺少打開和關閉括號內爲IfEnd If的Visible屬性:

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

這是一個正確的方向,但在瀏覽器中運行時出現這種情況:編譯器錯誤消息:BC30451:名稱'容器'未聲明。 – lgriffin

+0

如果我沒有記錯,只有DataBinding語法('<%# %>')可用'Container'。如果我是對的(從我使用WebForms開始就有一段時間了),請與格雷厄姆的答案一致。 – jrummell

+0

會的,謝謝你的時間。 – lgriffin

1

結束了使用此,感謝您的幫助傢伙!

在頁面:

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

後面的代碼:

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