2011-01-18 46 views

答えて

5

期待しているアイテムの数がわかっている場合は、最後のアイテムであるかどうかをe.Item.ItemIndexプロパティで確認できます。または、何をしようとしているかに応じて、フッターテンプレートを利用できるかもしれません。

2

時々、私はItemTemplatesにPlaceHolderインスタンスを使用してこれを行います。すなわち:私のItemDataBound方法で次に

protected int _bindCtr = 0; 

protected void MyItemDataBound(object sender, RepeaterItemEventArgs args) 
{ 
    if (args.Item.ItemType == ListItemType.AlternatingItem || 
     args.Item.ItemType == ListItemType.Item) 
    { 
     ++this._bindCtr; 
     this.phIsLastOne.Visible = this._bindCtr == this._dataSource.Count; 
     this.phIsNotLastOne.Visible = this._bindCtr < this._dataSource.Count; 
    } 
} 

よりか、私は通常、保護されたクラスのメンバーとして私のクラスでOnItemDataBoundカウンターを追跡するための変数を持っている

<ItemTemplate> 
<asp:PlaceHolder id="phIsNotLastOne" runat="server">Is not last</asp:PlaceHolder> 
<asp:PlaceHolder id="phIsLastOne" runat="server">Is last</asp:PlaceHolder> 
</ItemTemplate> 

もっと少なく。データソースを評価可能にして、バインディングする前にカウンターを0に設定してください。

上記のアプローチに対して、提案されているようにItemIndexを見る方が良いでしょう。 また、Repeater型には厳密に型指定されていないが、データソースへの参照を持つDataSourceプロパティがあります。

0

もう1つのオプションは、リピーターにバインドされているアイテムの数を保持するローカル変数を作成することです。

あなたはOnItemDataBoundイベントの中にいるときに現在の項目のインデックス(e.Item.ItemIndex)は、カウントに等しい場合次に、チェック - 1(必要性を-1アイテムインデックスが0基づいている)

..だから

if (e.Item.ItemIndex == (repeaterItemCount - 1)) 
{ 
    // Work on last item here... 
} 
3

このようにして直接行うことができます。次のコードでは、最後の項目に「Last」クラスが適用されます。それに応じてスタイリングを適用することができます。

<asp:Repeater ID="rptrMainContent" runat="server"> 
    <ItemTemplate> 
    <li class="<%#Container.ItemIndex==(rptrMainContent.DataSource as IList).Count-1?"Last":"" %>"> 
some text 
    </li> 
    </ItemTemplate> 
</asp:Repeater> 
+0

同様のソリューションでContainer.Parentを使用する場合は、https://stackoverflow.com/a/9742857/2340825を参照してください。 –

関連する問題