3

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ではなくテーブルを使用する方が一般的です。ですから、それが根本的な問題かもしれないことを私は知っています。

なぜ違うのかわかりません。

4

1 に答える 1

6

<<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>
于 2013-02-11T22:19:59.927 に答える