Repeater'daki ilk elemana değer eklemek (Container.ItemIndex)
Selamlar,
Repeater'da gelen datasource'daki ilk ya da son değere bir değer atamak isteyebilirsiniz. Dahası her bir elemana farklı şeyler de atamak isteyebilirsiniz. Bunu Container.ItemIndex ile çözebiliriz. Mantık şu: ItemIndex değeri 0 ise yani ilk değer ise şunu şunu döndür, değilse şunu gibi.
Bir örnekle açıklayalım.
Ön kısımdaki Repeater şöyle olsun.
<asp:Repeater runat="server" ID="RptImages">
<ItemTemplate>
<li class="<%# GetClass(Container.ItemIndex) %>">
<%# Eval("Resim") %>
</li>
</ItemTemplate>
</asp:Repeater>
Codebehind tarafında oluşturacağımız metod ise şöyle:
Önce Repeater'da datasource verilir:
RptImage.DataSource = data;
RptImage.DataBind();
Ardından şu metod yazılır:
protected string GetClass(int itemIndex)
{
if (itemIndex == 0)
return "item active";
else if (itemIndex == this.ItemCount - 1)
return "item";
else
return "item";
}
Container.ItemIndex ile sorunu çözmüş oluruz.
Alternatif olarak şunu da kullanabilirsiniz:
<asp:Repeater ID="RptImages" runat="server" ViewStateMode="Disabled">
<ItemTemplate>
<li<%# Container.ItemIndex == ((IList)((Repeater)Container.Parent).DataSource).Count-1 ? " class='sonuncu'" : "birinci"%>>
...
</li>
</ItemTemplate>
</asp:Repeater>
Iyi çalışmalar,
Recep.