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` ?