2013. 11. 20. 12:29

오늘 페이징 관련 코딩을하다가 할때마다 헷갈려서 정리를 해봤습니다.

 

로컬에 있는 파일을 게시판 처럼 보여주게 했는데 DB에서 긁어오는거나 어차피 기본 로직은 같을 거라 생각되네요

 

제일 헷갈리는게 변수값 구하는거라 해당 부분만 정리해봤습니다.

 

 변수명설명Logic
1pageNo현재 페이지 번호 디폴트 값 : 1하단의 [1][2][3] 이나 [prev] [next] 클릭시 QueryString으로 입력받음
2pageSize한페이지에 보이는 게시물 수 (fix)내맘 (5)
3groupSize게시판 하단에 나오는 [1][2][3][4][5] 의 페이지 수 (fix)내맘 (3)
4totCnt게시물의 총 CountDB Query로 조회
5groupNo현재 그룹 번호. groupSize가 3인경우 
 [1][2][3]이면 '1' [4][5][6]이면 '2' [7][8][9]면 '3' ....
pageNo / groupSize + (pageNo % groupSize == 0 ? 0 : 1)
6startRow현재 페이지의 시작 번호(pageNo - 1) * pageSize + 1
7endRow현재 페이지의 끝 번호pageNo * pageSize
8startPage현재 그룹의 시작 페이지 번호(groupNo - 1 ) * groupSize + 1
9endPage현재 그룹의 마지막 페이지 번호startPage + groupSize - 1
if(endPage > totalPageCnt) endPage = totalPageCnt;
10totalPageCnt총 페이지 Count(totCnt / pageSize) +  (totCnt % pageSize == 0 ? 0 : 1)
11totalPageGroupCnt총 그룹 CounttotalPageCnt / groupSize + ( totalPageCnt % groupSize == 0 ? 0 : 1 )
12prevGroupPage이전 그룹으로 이동하는 페이지 번호(groupNo - 2 ) * groupSize + 1
13nextGroupPage다음 그룹으로 이동하는 페이지 번호groupNo * groupSize + 1

 

참고로 pageNo / groupSize + (pageNo % groupSize == 0 ? 0 : 1) 같은 코드는

(int)Math.ceil((double)pageNo/groupSize) 로도 바꿀 수 있습니다. (올림)

 

아래는 PageNo가 '5'일때 해당 화면입니다.

 

 

그럼 수고하세요~


출저:http://cafe.naver.com/javachobostudy/28097

Posted by hoonihoon