게시판 같은거 만들때 일련번호를 표기하는데 보통 DB 쿼리할때 나오는 RowNum 같은 거 받아서 표기하면 되는데 그런 정보가 없을 경
우 일련번호를 순차적으로 매기는 방법이다
1. 페이징을 하지 않는 경우
페이징을 하지 않고 데이터가 그냥 쭉 순서대로 나열 된다면 그냥
Repeater 의 ItemTemplate 안에
<%#Container.ItemIndex + 1 %> 하면 인덱스가 0 부터 시작하니까 1부터 순서대로 출력이 될 것이다.
만역 내림차순으로 표시를 해야 한다면 전체 레코드의 개수를 알아야 한다
<%#전체레코드 수 - Container.ItemIndex %> 하면 되겠다
2. 페이징을 하는 경우
페이징을 하는 경우는 좀 계산을 해야 한다
페이징시에는 필수적으로 전체레코드 개수와 페이지당 표시하는 레코드 수가 있어야 하는데
이 값들을 통해 계산을 해야한다
가정을 해보자
전체레코드가 5000개 이고 한페이지 당 10개씩 보여주며 일련번호는 내림차순으로 표시해 줘야 한다면 ??
이 경우 먼저 각 페이지당 시작번호를 알아야 한다
아래 식으로 계산 가능하다
5000 - ((현재 페이지 번호 - 1) * 10)
1 페이지는 5000
2 페이지는 4990
3 페이지는 4980
이게 시작번호가 된다
시작번호를 알았으니 이 값에 ItemIndex 차감해 주면 역순으로 표시가 가능해 진다
Repeater의 ItemDataBound 이벤트에서 처리를 해준다면 아래처럼 표시를 해주면 된다
protected void 리피터_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
라벨컨트롤.Text = (시작번호- e.Item.ItemIndex).ToString()
}
}
'메모' 카테고리의 다른 글
1030 메모 (0) | 2013.10.30 |
---|---|
코드하이라이터 (0) | 2013.10.28 |
[위키피디아] MS 자격증 (0) | 2013.09.16 |
C# 콤마 숫자 3자리 (0) | 2013.09.14 |
aspnet_isapi.dll 뭐하는 녀석인가 (0) | 2013.09.12 |