将通用列表绑定到中继器 – ASP.NET

我正在尝试将一个List<AreaField>绑定到一个中继器。 我已经通过使用ToArray()方法将列表转换为数组,现在有一个AreaField[]的数组

这是我的类层次结构

 public class AreaFields { public List<Fields> Fields { set; get; } } public class Fields { public string Name { set; get; } public string Value {set; get; } } 

在aspx中,我想绑定一个中继器(像这样的东西)

 DataBinder.Eval(Container.DataItem, "MyAreaFieldName1") 

MyAreaFieldName1是AreaFieldItem类中Name属性的值。

你可能想创build一个subRepeater。

 <asp:Repeater ID="SubRepeater" runat="server" DataSource='<%# Eval("Fields") %>'> <ItemTemplate> <span><%# Eval("Name") %></span> </ItemTemplate> </asp:Repeater> 

你也可以投你的领域

 <%# ((ArrayFields)Container.DataItem).Fields[0].Name %> 

最后你可以做一些CSV函数,并用函数写出你的字段

 <%# GetAsCsv(((ArrayFields)Container.DataItem).Fields) %> public string GetAsCsv(IEnumerable<Fields> fields) { var builder = new StringBuilder(); foreach(var f in fields) { builder.Append(f); builder.Append(","); } builder.Remove(builder.Length - 1); return builder.ToString(); } 

这是令人惊讶的简单…

代码后面:

 // Here's your object that you'll create a list of private class Products { public string ProductName { get; set; } public string ProductDescription { get; set; } public string ProductPrice { get; set; } } // Here you pass in the List of Products private void BindItemsInCart(List<Products> ListOfSelectedProducts) { // The the LIST as the DataSource this.rptItemsInCart.DataSource = ListOfSelectedProducts; // Then bind the repeater // The public properties become the columns of your repeater this.rptItemsInCart.DataBind(); } 

ASPX代码:

 <asp:Repeater ID="rptItemsInCart" runat="server"> <HeaderTemplate> <table> <thead> <tr> <th>Product Name</th> <th>Product Description</th> <th>Product Price</th> </tr> </thead> <tbody> </HeaderTemplate> <ItemTemplate> <tr> <td><%# Eval("ProductName") %></td> <td><%# Eval("ProductDescription")%></td> <td><%# Eval("ProductPrice")%></td> </tr> </ItemTemplate> <FooterTemplate> </tbody> </table> </FooterTemplate> </asp:Repeater> 

我希望这有帮助!

代码背后:

 public class Friends { public string ID { get; set; } public string Name { get; set; } public string Image { get; set; } } protected void Page_Load(object sender, EventArgs e) { List <Friends> friendsList = new List<Friends>(); foreach (var friend in friendz) { friendsList.Add( new Friends { ID = friend.id, Name = friend.name } ); } this.rptFriends.DataSource = friendsList; this.rptFriends.DataBind(); } 

.aspx页面

 <asp:Repeater ID="rptFriends" runat="server"> <HeaderTemplate> <table border="0" cellpadding="0" cellspacing="0"> <thead> <tr> <th>ID</th> <th>Name</th> </tr> </thead> <tbody> </HeaderTemplate> <ItemTemplate> <tr> <td><%# Eval("ID") %></td> <td><%# Eval("Name") %></td> </tr> </ItemTemplate> <FooterTemplate> </tbody> </table> </FooterTemplate> </asp:Repeater> 

你应该使用ToList()方法。 (不要忘了System.Linq命名空间)

例:

 IList<Model> models = Builder<Model>.CreateListOfSize(10).Build(); List<Model> lstMOdels = models.ToList();