2011-01-18 4 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

또 다른 옵션은 repeater에 바인딩되는 항목의 수를 저장하기위한 로컬 변수를 만드는 것입니다. 당신이 OnItemDataBound 이벤트 내에있을 때 현재 항목의 인덱스 (e.Item.ItemIndex)는 계수와 동일한 경우

그런 다음, 확인 - 1 (필요 -1 항목 인덱스 기반 0으로) 그래서

..

3

다음과 같은 코드로 마지막 항목에 클래스를 적용 할 수 있습니다. 그에 따라 스타일을 적용 할 수 있습니다.

<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를 참조하십시오. –

관련 문제