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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.