public static string PageNavi(string path, int nowPage, int totRecCnt, int pageSize)
{
int totPage = 0;
totPage = totRecCnt % pageSize;
//총 게시글의 수를 페이지사이즈(10)로 나눠 나온 나머지를 totPage에 대입.
if (totPage == 0)
{
totPage = totPage / pageSize;
}
else
{
totPage = (totRecCnt / pageSize) + 1;
}
int startPage = ((nowPage - 1) / 10) * 10 + 1;
//startPage는 항상 해당 단락의 첫번째. ex) 27 페이지의 첫번째는 21.
int endPage = 0;
string _pageReturn = "";
if (path.IndexOf('?') > -1)//넘어 온 path에 특정문자 '?'가 있다면, -1보다 크기때문에 true.
{
path += "&page=";
}
else
{
path += "?page=";
}
if (totPage > startPage + 9)
{
endPage = startPage + 9;
}
else
{
endPage = totPage;
}
if (startPage > 10)
{
_pageReturn += "<a href=\"" + path + "1\" class=\"start\"><span><img src=\"/Images/Common/btn_pre_pre.jpg\" width=\"24\" height=\"7\" alt=\"처음\" /></span></a>";
_pageReturn += "<a href=\"" + path + (startPage - 10).ToString() + "\" class=\"pre\"><span><img src=\"/Images/Common/btn_pre.jpg\" width=\"24\" height=\"7\" alt=\"이전\" /></span></a>";
}
for (int i = startPage; i <= endPage; i++)
{
if (nowPage == i)
{
_pageReturn += "<strong>" + i.ToString() + "</strong>";
}
else
{
_pageReturn += "<a href=\"" + path + i.ToString() + "\">" + i.ToString() + "</a>";
}
}
if (totPage > 10)
{
if (endPage < totPage)
{
_pageReturn += "<a href=\"" + path + (startPage + 10).ToString() + "\" class=\"next\"><span><img src=\"/Images/Common/btn_next.jpg\" width=\"24\" height=\"7\" alt=\"다음\" /></span></a>";
_pageReturn += "<a href=\"" + path + totPage.ToString() + "\" class=\"end\"><span><img src=\"/Images/Common/btn_next_next.jpg\" width=\"24\" height=\"7\" alt=\"종료\" /></span></a>";
}
}
return _pageReturn;
} |
string path- 경로("Default.aspx")
int nowPage- 현재페이지(클라이언트가 요청하는 페이지)
int totRecCnt- DB에 있는 게시글의 총 갯수
int pageSize- 페이지 사이즈(한 페이지에 몇개의 글을 출력할 것인가)
Default.aspx
<div class="pagenavi" id="pagenavi" runat="server"></div>
Default.aspx.cs
pagenavi.InnerHtml = siteCommonUI.PageNavi("/Default.aspx", _page, _totCnt, _pageSize);
pagenavi 컨트롤의 태그사이에~ siteCommonUI클래스에 있는 PageNavi를 호출.