Personalizzare i template del Repeater

di Daniele Bochicchio, in ASP.NET, ADO.NET, DataBinding,

Benchè l'approccio basato sui Template sia utile, in certi casi presenta dei limiti che in realtà si possono aggirare con un po' di codice.
Lo scenario è un Repeater così definito:

<table border="1">
<ASP:Repeater id="rp" runat="server" onItemCreated="rp_ItemCreated">
<ItemTemplate>
<tr id="tr" runat="server">
<td><%#DataBinder.Eval(Container.DataItem, "Nome")%></td>
</tr>
</ItemTemplate>
</ASP:Repeater>
</table>

La necessità è quella di creare un template che abbia un colore diverso nell'AlternatingItem. E' ovviamente possibile arrivarci duplicando il template, ma se non si vuole duplicare inutilmente il codice, perchè ad esempio il template è caricato esternamente, come quando si utilizza LoadTemplate, è sempre possibile intercettare l'evento ItemCreated, che si verifica alla creazione di ogni singolo item del Repeater, e cambiare il colore di sfondo (o qualsiasi altra proprietà) in questo modo:

private void rp_ItemCreated(object sender, RepeaterItemEventArgs e)
{
  // solo se è il pager
  if (e.Item.ItemType == ListItemType.AlternatingItem) {
    // lo rendo rosso!
    TableRow tRow = (TableRow)e.Item.FindControl("tr");
    tRow.Style("background-color") = "red";
  }
}

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi