오늘 페이징 관련 코딩을하다가 할때마다 헷갈려서 정리를 해봤습니다.
로컬에 있는 파일을 게시판 처럼 보여주게 했는데 DB에서 긁어오는거나 어차피 기본 로직은 같을 거라 생각되네요
제일 헷갈리는게 변수값 구하는거라 해당 부분만 정리해봤습니다.
변수명 | 설명 | Logic | |
1 | pageNo | 현재 페이지 번호 디폴트 값 : 1 | 하단의 [1][2][3] 이나 [prev] [next] 클릭시 QueryString으로 입력받음 |
2 | pageSize | 한페이지에 보이는 게시물 수 (fix) | 내맘 (5) |
3 | groupSize | 게시판 하단에 나오는 [1][2][3][4][5] 의 페이지 수 (fix) | 내맘 (3) |
4 | totCnt | 게시물의 총 Count | DB Query로 조회 |
5 | groupNo | 현재 그룹 번호. groupSize가 3인경우 [1][2][3]이면 '1' [4][5][6]이면 '2' [7][8][9]면 '3' .... | pageNo / groupSize + (pageNo % groupSize == 0 ? 0 : 1) |
6 | startRow | 현재 페이지의 시작 번호 | (pageNo - 1) * pageSize + 1 |
7 | endRow | 현재 페이지의 끝 번호 | pageNo * pageSize |
8 | startPage | 현재 그룹의 시작 페이지 번호 | (groupNo - 1 ) * groupSize + 1 |
9 | endPage | 현재 그룹의 마지막 페이지 번호 | startPage + groupSize - 1 if(endPage > totalPageCnt) endPage = totalPageCnt; |
10 | totalPageCnt | 총 페이지 Count | (totCnt / pageSize) + (totCnt % pageSize == 0 ? 0 : 1) |
11 | totalPageGroupCnt | 총 그룹 Count | totalPageCnt / groupSize + ( totalPageCnt % groupSize == 0 ? 0 : 1 ) |
12 | prevGroupPage | 이전 그룹으로 이동하는 페이지 번호 | (groupNo - 2 ) * groupSize + 1 |
13 | nextGroupPage | 다음 그룹으로 이동하는 페이지 번호 | groupNo * groupSize + 1 |
참고로 pageNo / groupSize + (pageNo % groupSize == 0 ? 0 : 1) 같은 코드는
(int)Math.ceil((double)pageNo/groupSize) 로도 바꿀 수 있습니다. (올림)
아래는 PageNo가 '5'일때 해당 화면입니다.
그럼 수고하세요~
'2019년 이전 정리 > JavaScript & Jqeury & Ajax & JSP' 카테고리의 다른 글
게시판 이전글 다음글 쿼리문 (0) | 2013.11.22 |
---|---|
페이징처리 4 [클래스코드] (0) | 2013.11.22 |
게시판 페이징 처리 (0) | 2013.11.19 |
Check if inputs are empty using jQuery (0) | 2013.10.24 |
Javascript 문법검사 (0) | 2013.10.22 |