2013-02-11 44 views
2

我将DataTable绑定到中继器。然而,当我跑我的aspx页面它不评估eval语句和网页上显示它们为DataTable和ASP.NET中继器

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

我已经改变了一些名字在上面的例子

在调试信息我可以看到我的DataTable正在使用正确的列名称,并且这些符合我的eval语句。

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

我看不出为什么它会有任何不同。

回答

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>