ASP.NET Repeater bind Lista<cadena>
data-binding (7)
Establezca el ItemType en System.string
<asp:Repeater ItemType="System.string" runat="server">
<ItemTemplate>
<%# Item %>
</ItemTemplate>
</asp:Repeater>
Estoy vinculando una List<string>
a un control Repeater. Ahora quiero usar la función Eval
para mostrar los contenidos en ItemTemplate
como
<%# Eval("NAME") %>.
Pero no estoy seguro de qué debería usar en lugar de NAME.
Esto debería funcionar bien:
<ItemTemplate>
<%=this.GetDataItem().ToString() %>
</ItemTemplate>
Plantilla de artículo interior
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text=''<%# Eval("YourEntityName").ToString() ==""? "NA" : Eval("YourEntityName").ToString()%>''></asp:Label>
<ItemTemplate>
o simplemente agregue dentro de la plantilla del artículo
<%# Eval("YourEntityName").ToString() ==""? "NA" : Eval("YourEntityName").ToString()%>
Solo use <%# Container.DataItem.ToString() %>
Si le preocupan los valores nulos, es posible que desee refactorizarlo a este (.NET 6+)
<asp:Repeater ID="repeater" runat="server">
<ItemTemplate>
<%# Container.DataItem?.ToString() ?? string.Empty%>
</ItemTemplate>
</asp:Repeater>
Tenga en cuenta que si usa menos de .NET 6, no puede usar el operador con nulo condicional Container.DataItem? .ToString ()
Un ejemplo más completo basado en el LINQ provisto por @RobertoBr:
En código detrás:
List<string> notes = new List<string>();
notes.Add("Value1")
notes.Add("Value2")
repeaterControl1.DataSource = from c in notes select new {NAME = c};
repeaterControl1.DataBind();
En la página:
<asp:Repeater ID="repeaterControl1" runat="server" >
<ItemTemplate>
<li><%# Eval("NAME") %></li>
</ItemTemplate>
</asp:Repeater>
tienes que usar la sintaxis de databing aquí o no funcionará.
<%# this.GetDataItem().ToString() %>
rptSample.DataSource = from c in lstSample select new { NAME = c };
en el repetidor pones
<%# Eval("NAME") %>