DMc*_*ick 3 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() %>
Run Code Online (Sandbox Code Playgroud)
它也将它分解为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>
Run Code Online (Sandbox Code Playgroud)
要绑定的代码如下:
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;
}
Run Code Online (Sandbox Code Playgroud)
我已经改变了上面例子中的一些名字
在Debug信息中,我可以看到我的DataTable使用了正确的列名,并且这些名称与我的eval语句匹配.
我知道我已经以一种相当奇怪的方式创建了这个,从我读过的内容和在线研究中,更常见的是使用表而不是Divs /或Spans.所以我意识到这可能是它的核心问题.
我不明白为什么会有任何不同.
<<从您的eval语句中删除.它应该是:
<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>
Run Code Online (Sandbox Code Playgroud)