반응형
var PageSize = 10; // 페이지당 보여줄 목록수
var PageGroupSize = 10; // 페이지네이션 리스트 수
var TableAndPage = "makeTableAndPagination";
var currentPageNumStorage;
$(document).ready(
$(function() {
makeTableAndPagination('1');
})
)
var makeTableAndPagination = function(p_currentPage) {
var TotalCount;
var count;
var tag = "";
$.ajax({
type: "GET",
url: "getInformation?pageNum=" + p_currentPage,
success: function(data) {
// 총 데이터 수
TotalCount = data.total;
// 페이지네이션 그리기
tagFactoryPage(p_currentPage, TotalCount);
// 현재 페이지번호 → 현재 페이지 번호를 기억시켜 다른 action을 해도 그대로 있게 하기
currentPageNumStorage = p_currentPage;
}
}); // ajax 종료
}
var tagFactoryPage = function(currentPage, total) {
var total = total; // 전체건수
var currentPage = currentPage; // 현재페이지
var pageTotCount = Math.ceil(tot_count / indexPageSize); // 전체페이지수 → 15 / 10 = 0.5 → 1
var numPageGroup = Math.ceil(currentPage / indexPageGroupSize); // 현재페이지가 10 이내일 경우 → 1
var startPage = (numPageGroup - 1) * PageGroupSize + 1; // 1 11 21
var endPage = startPage + PageGroupSize - 1 // 10 20 30
if (endPage > pageTotCount) endPage = pageTotCount; // 마지막페이지가 전체페이지보다 큰경우 처리 20 > 12
var HtmlTag = "";
// 첫번째페이지 표시 >> 누르면 가장 마지막 페이지 이동
// 1 ~ 10 페이지에 속하지만 않으면 무조건 나옵니다.
if (startPage <= PageGroupSize) HtmlTag += ""; // startPage(1, 10, 20) 이 PageGroupSize(1[1~10], 2[11~20]) 보다
else HtmlTag += "<li class='page-item page-item1'><a href=# class='page-link' onclick=" + TableAndPage + "('1')> 《 </a></li>";
// 이전페이지 표시 < 누를시 11 ~ 20 은 10으로 21 ~ 30 은 20으로 이동합니다.
// 1 ~ 10 페이지에 속하지만 않으면 무조건 나옵니다.
if (startPage <= PageGroupSize) HtmlTag += "";
else HtmlTag += "<li class='page-item page-item1'><a href=# class='page-link' onclick=" + TableAndPage + "('" + (startPage - 1) + "')>〈 </a></li>";
var idx = 0;
for (idx = startPage; idx <= endPage; idx++) {
// 자기자신의 페이지일경우 active 활성화와 하이퍼링크 제거
if (currentPage == idx) HtmlTag += "<li class='page-item page-item1 active' id=pagination value='" + idx + "'><a href=# class='page-link'>" + idx + "</a></li>";
else HtmlTag += "<li class='page-item page-item1'><a class='page-link' href=# onclick=" + TableAndPage + "('" + idx + "')>" + idx + "</a></li>";
}
// 다음페이지 표시 > 누를시 1 ~ 10 은 11으로 11 ~ 20 은 21으로 이동합니다.
// 전체 페이지가 마지막 페이지부분만 아니면 >로 이동 가능한 페이지네이션을 만듭니다.
if (pageTotCount == endPage) HtmlTag += "";
else HtmlTag += "<li class=page-item page-item1><a class='page-link' onclick=" + TableAndPage + "('" + (endPage + 1) + "')>〉</a></li>"; // 다음
// 마지막페이지 표시 >> 누르면 가장 마지막 페이지 이동
// 전체 페이지가 마지막 페이지부분만 아니면 >로 이동 가능한 페이지네이션을 만듭니다.
if (pageTotCount == endPage) HtmlTag += "";
else HtmlTag += "<li class=page-item page-item1><a class='page-link' href=# onclick=" + TableAndPage + "('" + pageTotCount + "')> 》 </a></li>";
$(".page-item1").remove(); // 페이지네이션이 그려졌던 걸 지우고 다시 그립니다. → 안 지우면 페이지 이동시 남아 있는 상태로 붙여넣기가 된다.
$("#page_list_navi").append(HtmlTag); // 새롭게 프로젝트 list를 생성한다.
}
ajax통신을 하는 javascript입니다.
<div class="paging">
<ul class="pagination justify-content-center"
id="page_list_navi_index">
</ul>
</div>
html에서 페이지네이션을 그려넣을 부분입니다.
무조건 전체갯수가 필요합니다
반응형