2016-03-11 3 views
0

У меня есть мой ретранслятор, настроенный на все работающие, но есть несколько настроек, которые мне нужно сделать для каждого третьего элемента. мой код нижеC# Repeater - Показать альтернативный шаблон для каждого третьего элемента

<asp:Repeater ID="rptItems" runat="server" onitemdatabound="rptItems_ItemDataBound"> 
     <ItemTemplate> 
      content/html/eval 
     </ItemTemplate> 
     <AlternatingItemTemplate> 
      content/html/eval 
     </AlternatingItemTemplate> 
    </asp:Repeater> 

то в моем onitemdatabound настроить

protected void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     // check to see if this is the page to show the form on 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      if (e.Item.ItemType == ListItemType.AlternatingItem) 
      { 
       e.Item.Visible = ((e.Item.Parent as Repeater).Items.Count % 3 == 0); 
      } 
     } 


    } 

, но это не кажется, работает, он просто скрывает один из пунктов, любая помощь будет большим.

ответ

0

Вам нужно использовать индекс предметов, а не счет. Count - статическое значение.

Может быть что-то вроде этого:

e.Item.Visible = (e.Item.Index % 3 == 0); 
0

Используйте RepeaterItem.ItemIndex вместо Items.Count

e.Item.ItemIndex % 3 == 0 

так:

e.Item.Visible = e.Item.ItemType == ListItemType.AlternatingItem &&      
            e.Item.ItemIndex % 3 == 0 

read more on MSDN

удалите элемент Alternating для внесения изменений только на каждый 3-й элемент.

<asp:Repeater ID="rptItems" runat="server" onitemdatabound="rptItems_ItemDataBound"> 
     <ItemTemplate> 
      content/html/eval 
     </ItemTemplate> 
    </asp:Repeater> 

И ваш позади кода будет:

e.Item.Visible = e.Item.ItemIndex % 3 == 0 
+0

Привет, спасибо Каспар, но только 7 из 10 пунктов обнаруживаются если (e.Item.ItemType == ListItemType.AlternatingItem) { e.Item.Visible = e.Item.ItemType == ListItemType.AlternatingItem && e.Item.ItemIndex% 3 == 0; } – ltjfansite

+0

что должно быть результатом? –

+0

два показывают все мои товары (10 в настоящее время), но каждый третий элемент, мне нужно будет использовать шаблон AlternatingItem, а не стандартный ItemTemplate – ltjfansite