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.
Approfondimenti
I più letti di oggi
- I nuovi metodi degli array di ECMAScript 5
- Evitare (o ridurre) il repo-jacking sulle GitHub Actions
- Un custom control BoundField con dropdownlist
- .NET Core 3, C#8 and beyond
- Utilizzare long polling in HTML5 per richieste in real time
- Utilizzare le shortcut da tastiera con KeyboardAccelerator nella Universal Windows Platform
- Microsoft Security Bulletin MS05-048