DataTable and ASP.NET Repeater

22,042

Remove the << from your eval statements. It should be:

<div class="ItemDiv">
    <span class="ItemLeft"></span>
    <span class="ItemCentre">
        <asp:Label ID="Name" runat="server" Text='<%# Eval("Name").ToString() %>'></asp:Label>
    </span>
    <span class="ItemRight">
        <asp:Label ID="UserName" runat="server" Text='<%# Eval("UserName").ToString() %>'></asp:Label>
    </span>
</div>
Share:
22,042
LostCoderBoy
Author by

LostCoderBoy

Updated on February 12, 2020

Comments

  • LostCoderBoy
    LostCoderBoy about 4 years

    I am binding a DataTable to a repeater. However when I run my aspx page it is not evaluating the Eval statements and displaying them on the page as

    <<%# Eval("Name").ToString() %> Posted by: <<%# Eval("UserName").ToString() %>
    <<%# Eval("Name").ToString() %> Posted by: <<%# Eval("UserName").ToString() %>
    <<%# Eval("Name").ToString() %> Posted by: <<%# Eval("UserName").ToString() %>
    

    It is also breaking it down to 3 rows. Which is also not what I had expected. I thought it would display as spans normally would

    I have taken out the .ToString to check if it was that causing the issue. But it was not.

    Below is my Repeater

    <asp:Repeater ID="First" runat="server">
            <ItemTemplate>
                <div class="ItemDiv">
                    <span class="ItemLeft"></span>
                    <span class="ItemCentre">
                        <asp:Label ID="Name" runat="server" Text='<<%# Eval("Name").ToString() %>'></asp:Label>
                    </span>
                    <span class="ItemRight">
                        <asp:Label ID="UserName" runat="server" Text='<<%# Eval("UserName").ToString() %>'></asp:Label>
                    </span>
                </div>
            </ItemTemplate>
        </asp:Repeater>
    

    The code to bind is the following:

    public void dataLoad()
    {
        DataTable Data = loadData(1,1,1);
    
        if (Data.Rows.Count < 10)
        {
            // Only populate the data from datatable
            First.DataSource = Data;
            First.DataBind();
            Second.Visible = false;
            noData.Visible = true;
        }
    

    I have changed some of the names in the above example

    In the Debug information I can see that my DataTable is using the correct column names, and that these match my eval statements.

    I know I have created this in a rather strange way, from what I have read, and researched online it is more common to use a table rather than Divs/or Spans for this. So I am aware that that may be the problem at its heart.

    I cannot see why it would be any different.