J'essaie simplement d'ajouter une classe css à une div sur des lignes alternatives dans mon <itemtemplate/>
sans avoir à ajouter un <alternatingitemtemplate/>
complet, ce qui m'oblige à garder beaucoup de balises synchronisées à l'avenir.
J'ai déjà vu une solution telle que http://blog.net-tutorials.com/2009/04/02/how-to-alternate-row-color-with-the-aspnet-repeater-control/ que je suis tenté d'utiliser mais cela ne «sent» toujours pas bien pour moi.
Quelqu'un d'autre a-t-il une solution plus facile à gérer et plus simple à gérer? Idéalement, j'aimerais pouvoir faire quelque chose comme:
<asp:repeater id="repeaterOptions" runat="server">
<headertemplate>
<div class="divtable">
<h2>Other Options</h2>
</headertemplate>
<itemtemplate>
<div class="item <%# IsAlternatingRow ? "dark" : "light" %>">
Mais je n'arrive pas à comprendre comment implémenter IsAlternatingRow
- même avec des méthodes d'extension.
Il n'est pas nécessaire de gérer votre propre variable (un compteur incrémentant ou un booléen); vous pouvez voir si la propriété ItemIndex
intégrée est divisible par deux et l'utiliser pour définir une classe css:
class="<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>"
Cela a l'avantage d'être entièrement basé sur votre code d'interface utilisateur (fichier ascx ou aspx) et ne repose pas sur JavaScript.
C #
class="<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>"
VB
class="<%# iif(Container.ItemIndex Mod 2 = 0,"","alternate") %>"
Cela m'a aidé
class='<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>'
La réponse précédente donnait l'erreur "La balise du serveur n'est pas bien formée".
Appliquez les classes avec JQuery.
$('.divtable > div:odd').addClass('dark');
$('.divtable > div:even').addClass('light');
Little Tweak: la classe vide pourrait être supprimée avec quelque chose comme:
<%# Container.ItemIndex % 2 == 0 ? "<tr>" : "<tr class='odd'>" %>
Vous pouvez utiliser jQuery à la place. Cette réponse à une question précédente peut aider: jQuery Zebra selector
Pas besoin de code. Voici une solution CSS pure:
.item:nth-child(odd){background-color: #ccc}
.item:nth-child(){background-color: #ddd}
IsAlternatingRow peut être une propriété protégée et sera définie dans l'événement ItemDataBound ou ItemCreated.
protected void rpt_ItemDataBound(object sender, EventArgs e)
{
IsAlternatingRow = !IsAlternatingRow;
}