ASP.NETリピーターバインドリスト<文字列>


102

List<string>aをRepeaterコントロールにバインドしています。このEval関数を使用して、コンテンツを次のItemTemplateように表示したいと思います。

<%# Eval("NAME") %>.  

しかし、NAMEの代わりに何を使用すればよいかわかりません。

回答:


212

使うだけ <%# Container.DataItem.ToString() %>

null値が心配な場合は、これにリファクタリングすることができます(.NET 6以降)

<asp:Repeater ID="repeater" runat="server">
    <ItemTemplate>
        <%# Container.DataItem?.ToString() ?? string.Empty%>
    </ItemTemplate>
</asp:Repeater>

.NET 6未満を使用している場合、null条件演算子 Container.DataItem?.ToString()は使用できません。


25

ItemTypeをSystem.stringに設定します

<asp:Repeater ItemType="System.string" runat="server">
    <ItemTemplate>
        <%# Item %>
    </ItemTemplate>
</asp:Repeater>

6
ItemTypeプロパティは.NET Framework 4.5で導入されていることに注意してください。
Jonathan van de Veen、2014年

10
rptSample.DataSource = from c in lstSample select new { NAME = c };

あなたが置いたリピーターに

<%# Eval("NAME") %>

2
一部の例では、単にEvalを使用する代わりに、<%#DataBinder.Eval(Container.DataItem、 "NAME")%>を使用しています。違いは何ですか?
マシュー・ロック


3

@RobertoBrが提供するLINQに基づくより完全な例:

コードビハインド:

List<string> notes = new List<string>();
notes.Add("Value1")
notes.Add("Value2")

repeaterControl1.DataSource = from c in notes select new {NAME = c};
repeaterControl1.DataBind();

ページ上:

   <asp:Repeater ID="repeaterControl1" runat="server" >
    <ItemTemplate>
        <li><%# Eval("NAME")  %></li>
    </ItemTemplate>
    </asp:Repeater>

3

ここではdatabind構文を使用する必要があります。そうしないと機能しません。

<%# this.GetDataItem().ToString() %>

0

内部アイテムテンプレート

     <ItemTemplate>
 <asp:Label ID="lblName"  runat="server" Text='<%# Eval("YourEntityName").ToString() ==""? "NA" : Eval("YourEntityName").ToString()%>'></asp:Label>
    <ItemTemplate>

または単にアイテムテンプレート内に追加する

<%# Eval("YourEntityName").ToString() ==""? "NA" : Eval("YourEntityName").ToString()%>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.