post icon

Data Bind Repeater with Custom List as DataSource

Effettuare un Data Bind di un controllo Repeater impostando come Data Source una List personalizzata

Vediamo in questo code snippet come effettuare un Data Bind di un controllo Repeater utilizzando come data Source una Lista Personalizzata.
Utilizziamo, in questo esempio, un oggetto di List<Automobile> e sfruttiamo anche alcune proprietà di tipo RepeaterItem, ad esempio l’ ItemIndex.

Abbiamo, dunque, nella parte ASPX il seguente codice:

<asp:Repeater ID="rpt_myAuto" runat="server"> <HeaderTemplate> <table cellpadding="1" cellspacing="1" border> <tr> <td>Elemento</td> <td>Colore</td> <td>Porte</td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#(((RepeaterItem)Container).ItemIndex+1).ToString() %></td> <td><%#DataBinder.Eval(Container.DataItem, "Colore")%></td> <td><%#DataBinder.Eval(Container.DataItem, "Porte")%></td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate></asp:Repeater>

E’ possibile notare che nella parte ASPX si accede alle Proprietà pubbliche della lista di oggetti di tipo Automobile mediante il Container DataItem. E’ sufficiente impostare come parametro il nome della Proprietà per il quale si vuole effettuare il Databind (in questo caso sono Porte e Colore).

Oppure si può sfuttare l’intellisense di Visual Studio effettuando un cast del DataItem all’oggetto di tipo Automobile, cosicché si possono applicare anche Bind condizionali. 

<ItemTemplate> <tr> <td><%#(((RepeaterItem)Container).ItemIndex+1).ToString() %></td> <td><%# ((Automobile)Container.DataItem).Colore == "rosso" ? "Che bel colore il rosso" : ((Automobile)Container.DataItem).Colore %></td> <td><%# DataBinder.Eval(Container.DataItem, "Porte")%></td> </tr></ItemTemplate>

 Mentre nel CodBehind C# abbiamo 

protected void Page_Load(object sender, EventArgs e) { List<Automobile> myList = new List<Automobile>(); Automobile auto = null; auto = new Automobile(3, "rosso"); myList.Add(auto); //Add to List auto = new Automobile(5, "blu"); myList.Add(auto); //Add to List this.rpt_myAuto.DataSource = myList; this.rpt_myAuto.DataBind(); } public class Automobile { private int porte; private string colore; //Costruttore public Automobile(int p, string c) { this.porte = p; this.colore = c; } public int Porte { get { return this.porte; } } public string Colore { get { return this.colore; } } }

Il risultato è il seguente:

Scarica l’esempio completo: CodeSnippet_Bind_Repeater_from_List.zip (2,52 kb)

Enjoy snippet!

19 novembre 2009 @ 17:48

No comments yet.

Leave a comment

Leave a Reply

Are you human? Time limit is exhausted. Please reload CAPTCHA.