Binding a generic list to a repeater - ASP.NET


I am trying to bind a List<AreaField> to a repeater. I have converted the list into an array by using the ToArray() method and now have a array of AreaField[]

Here's my class hierarchy

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

public class Fields
    public string Name { set; get; }
    public string Value {set; get; }

In the aspx, I would like to bind it a repeater (something like this)

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

The MyAreaFieldName1 is the value of the Name property in the AreaFieldItem class.

9/24/2012 9:48:49 AM

Accepted Answer

You may want to create a subRepeater.

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

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.Remove(builder.Length - 1);
  return builder.ToString();
12/15/2013 3:34:40 PM

It is surprisingly simple...

Code behind:

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

ASPX code:

<asp:Repeater ID="rptItemsInCart" runat="server">
            <th>Product Name</th>
            <th>Product Description</th>
            <th>Product Price</th>
      <td><%# Eval("ProductName") %></td>
      <td><%# Eval("ProductDescription")%></td>
      <td><%# Eval("ProductPrice")%></td>

I hope this helps!

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow