Binding a generic list to a repeater - ASP.NET Binding a generic list to a repeater - ASP.NET asp.net asp.net

Binding a generic list to a repeater - ASP.NET


It is surprisingly simple...

Code behind:

// Here's your object that you'll create a list ofprivate class Products{    public string ProductName { get; set; }    public string ProductDescription { get; set; }    public string ProductPrice { get; set; }}// Here you pass in the List of Productsprivate 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 code:

<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>

I hope this helps!


You may want to create a subRepeater.

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

You can also cast your fields

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

Finally you could do a little CSV Function and write out your fields with a function

<%# 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();}


Code Behind:

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 Page

<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>