Search code examples
asp.netasprepeater

Don't render HTML element, if DataBinder.Eval(Container.DataItem, "someValue") == 0


I have a <asp:repeater> inside which i'm rendering a table with a few rows. Each row - corresponding to a different value.

Question: how to "skip" the row, in case this value is empty?

here is evaluation statement:

<%# DataBinder.Eval(Container.DataItem, "Website") == ""? "" : /*render element*/ %>

and here is element i want to render in case statement if false:

<tr>
    <td><span>Website address:</span></td>
    <td>
        <p><a href="<%#DataBinder.Eval(Container.DataItem, "Website") %>" class="red-link"><%#DataBinder.Eval(Container.DataItem, "Website") %></a></p>
    </td>
</tr>

Solution

  • Try this:

    <asp:Repeater runat="server" id="myRepeater">
        <ItemTemplate>
            <tr runat="server" 
               visible='<%#String.Format("{0}",DataBinder.Eval(Container.DataItem, "Website"))!="" %>'>
                <td><span>Website address:</span></td>
                <td>
                    <p><a href='<%#DataBinder.Eval(Container.DataItem, "Website") %>" 
                        class="red-link'><%#DataBinder.Eval(Container.DataItem, "Website") %></a></p>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
    

    It will set the row's visible attribute to false when the Website is empty or null.