ASP.NET 리피터 바인딩 목록 <문자열>


102

나는 List<string>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") %>을 사용합니다. 차이점이 뭐야?
Matthew Lock


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.