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;
}
上記の例でいくつかの名前を変更しました
デバッグ情報で、DataTableが正しい列名を使用しており、これらがevalステートメントと一致していることがわかります。
私が読んだことから、これをかなり奇妙な方法で作成し、オンラインで調査したことはわかっています。これには、DivsまたはSpansではなくテーブルを使用する方が一般的です。ですから、それが根本的な問題かもしれないことを私は知っています。
なぜ違うのかわかりません。