Подтвердить что ты не робот

ASP.NET-повторитель чередует выделение строки без полноразмерного <alternatingitemtemplate/">

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

Я видел решение, такое как http://blog.net-tutorials.com/2009/04/02/how-to-alternate-row-color-with-the-aspnet-repeater-control/, которое я испытываю к соблазну, но это все еще не "обоняет" мне.

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

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

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

4b9b3361

Ответ 1

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

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

Это может быть полностью основано на вашем пользовательском интерфейсе (ascx или aspx файл) и не полагается на JavaScript.

Ответ 2

С#

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

В. Б.

class="<%# iif(Container.ItemIndex Mod 2 = 0,"","alternate") %>"

Ответ 3

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

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

Предыдущий ответ привел к ошибке "Ошибка сервера".

Ответ 4

Применить классы с помощью JQuery.

$('.divtable > div:odd').addClass('dark');
$('.divtable > div:even').addClass('light');

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

protected void rpt_ItemDataBound(object sender, EventArgs e)
{
    IsAlternatingRow = !IsAlternatingRow;
}