posted by 네코냥이 2013. 10. 7. 10:33

게시판 같은거 만들때 일련번호를 표기하는데 보통 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