DataTable和ASP.NET Repeater

时间:2013-02-11 22:10:31

标签: c# asp.net data-binding datatable repeater

我正在将DataTable绑定到转发器。但是,当我运行我的aspx页面时,它不会评估Eval语句并在页面上显示为

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

它也将它分解为3行。这也不是我的预期。我认为它通常会显示为跨度

我已经取出.ToString来检查是否是导致问题的原因。但事实并非如此。

以下是我的中继器

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

要绑定的代码如下:

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;
    }

我已经更改了上面示例中的一些名称

在Debug信息中,我可以看到我的DataTable使用了正确的列名,并且这些名称与我的eval语句匹配。

我知道我已经以一种相当奇怪的方式创建了这个,从我读过的内容和在线研究中,更常见的是使用表而不是Divs /或Spans。所以我知道这可能是它的核心问题。

我不明白为什么会有任何不同。

1 个答案:

答案 0 :(得分:6)

从您的评估语句中删除<<。它应该是:

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