#741 - Personalizzare i template del Repeater

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";
  }
}


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC