본문 바로가기

ASP.NET 기초 게시판/BasicBoard

PageNavi_ 게시판 페이징

  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를 호출.