Подсветка альтернативных строк в ретрансляторе ASP.NET без полного разнесения <alternatingitemtemplate /> - PullRequest
54 голосов
/ 11 мая 2009

Я пытаюсь выполнить простое добавление класса css в div в чередующихся строках в моем <itemtemplate/>, не вдаваясь в накладные расходы при включении полноценного <alternatingitemtemplate/>, что вынудит меня синхронизировать большую разметку в будущем.

Я видел решение, такое как http://blog.net -tutorials.com / 2009/04/02 / как изменить цвет строки с помощью aspnet-ретранслятора-контроля / который я испытываю желание использовать, но это все еще не "пахнет" прямо мне.

Кто-нибудь еще получил более понятное и простое решение? В идеале я хотел бы иметь возможность сделать что-то вроде:

<asp:repeater id="repeaterOptions" runat="server">
        <headertemplate>
            <div class="divtable">
                <h2>Other Options</h2>
        </headertemplate>
        <itemtemplate>
                <div class="item <%# IsAlternatingRow ? "dark" : "light" %>">

Но я не могу понять, как реализовать IsAlternatingRow - даже с помощью методов расширения.

Ответы [ 8 ]

126 голосов
/ 11 мая 2009

Нет необходимости управлять своей собственной переменной (либо инкрементным счетчиком, либо логическим значением); вы можете увидеть, делится ли встроенное свойство ItemIndex на два, и использовать его для установки класса css:

class="<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>"

Преимущество этого состоит в том, что он полностью основан на вашем коде пользовательского интерфейса (ascx или aspx) и не зависит от JavaScript.

16 голосов
/ 13 августа 2009

C #

class="<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>"

VB

class="<%# iif(Container.ItemIndex Mod 2 = 0,"","alternate") %>"
6 голосов
/ 21 января 2014

Это помогло мне

class='<%# Container.ItemIndex % 2 == 0 ? "" : "alternate" %>'

Предыдущий ответ привел к ошибке «Метка сервера неправильно сформирована».

4 голосов
/ 11 мая 2009

Применение классов с JQuery.

$('.divtable > div:odd').addClass('dark');
$('.divtable > div:even').addClass('light');
2 голосов
/ 25 августа 2009

Небольшая настройка: пустой класс можно удалить с помощью чего-то вроде:

  <%# Container.ItemIndex % 2 == 0 ?  "<tr>" : "<tr class='odd'>"  %>
2 голосов
/ 11 мая 2009

Вместо этого вы можете использовать jQuery. Этот ответ на предыдущий вопрос может помочь: jQuery Zebra селектор

0 голосов
/ 24 марта 2015

Код не нужен. Вот чистое решение CSS:

.item:nth-child(odd){background-color: #ccc}
.item:nth-child(){background-color: #ddd}

https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child

0 голосов
/ 11 мая 2009

IsAlternatingRow может быть защищенным свойством и будет установлено в событии ItemDataBound или ItemCreated.

protected void rpt_ItemDataBound(object sender, EventArgs e)
{
    IsAlternatingRow = !IsAlternatingRow;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...