ASP.Net: Conditional Logic in a ListView's ItemTemplate

asp.net, c#, data-binding, listview, logic

Solution

What about binding the "Visible" property of a control to your condition? Something like:

<asp:ListView ID="MusicList" runat="server">
   <ItemTemplate>
    <tr runat="server" Visible='<%# Eval("DownloadLink") != null %>'>
        <td>
            <a href='<%#Eval("DownloadLink") %>'>Link</a>
        </td>
    </tr>
   </ItemTemplate>
</asp:ListView>

Problem

I want to show certain parts of an `ItemTemplate` based according to whether a bound field is null. Take for example the following code: (Code such as LayoutTemplate have been removed for brevity) ``` <asp:ListView ID="MusicList" runat="server"> <ItemTemplate> <tr> <% if (Eval("DownloadLink") != null) { %> <td> <a href="<%#Eval("DownloadLink") %>">Link</a> </td> <% } %> </tr> </ItemTemplate> </asp:ListView> ``` The above gives the following run-time error: Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control. So how can put some conditional logic (like the above) in an `ItemTemplate` ?

Original source