Create a HTML table with an ASP repeater, repeating horizontally

user1173169 picture user1173169 · Feb 20, 2012 · Viewed 21.5k times · Source

I'm trying to build a HTML table using an ASP repeater:

<asp:Repeater ID="RepeaterVersionsForPie" runat="server">
    <ItemTemplate>
        <table id="VersionsTable" >

                <tr>
                    <th>
                    <%#Eval("nameVersion")%>
                    </th>

                </tr>

    </ItemTemplate>
    <ItemTemplate>
        <tbody>
            <tr>
                <td tag="<%#Eval("idVersion")%>">
                    <%#Eval("NumberOfCompaniesUsingThisVersion")%>
                </td>
            </tr>
        </tbody>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>

This is a basic table which consists in two lines and X columns. The second line appears without any problems while the first one is invisible. Can anyone help to find what's missing? Thanks in advance.

Answer

Filburt picture Filburt · Feb 20, 2012

I think the core problem is that Repeater isn't designed to repeat horizontally.

Maybe you should try using DataList which allows to specify the RepeatingDirection.

Update

If you don't need to repeat horizontally (like your question suggests "...two lines and X columns") your Repeatershould look like this

<asp:Repeater ID="RepeaterVersionsForPie" runat="server">

    <HeaderTemplate>
        <table id="VersionsTable">
    </HeaderTemplate>

    <ItemTemplate>
        <tr>
            <th><%# Eval("nameVersion") %></th>
            <!-- Important: Put attributes in single quotes so they don't get
                 mixed up with your #Eval("xxx") double quotes! -->
            <td tag='<%#Eval("idVersion")%>'>
                <%# Eval("DocumentName") %>
            </td>
        </tr>
    </ItemTemplate>

    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>

Note that you must not repeat the <table> in your <ItemTemplate> and to use single quotes when you need to put your Eval inside an attribute.