티스토리 뷰

카테고리 없음

.NET MVC] paging

James Wetzel 2015. 6. 26. 11:42

Class

 public class Paging

    {


        /// <summary>

        /// 현재 페이지 번호

        /// </summary>

        public int CurrentPageNumber { get; set; }


        /// <summary>

        /// 총 페이지

        /// </summary>

        public int TotalPage { get; set; }


        /// <summary>

        /// 시작 페이지 번호

        /// </summary>

        public int StartPageNumber { get; set; }


        /// <summary>

        /// 끝 페이지 번호

        /// </summary>

        public int EndPageNumber { get; set; }



        /// <summary>

        /// 페이징 처리를 한다.

        /// </summary>

        /// <param name="totalRow">총 행의 수</param>

        /// <param name="rowSize">한 페이지에 출력할 행의 수</param>

        /// <param name="currentPageNumber">현재 페이지 번호</param>

        /// <param name="pageBlockSize">페이징수</param>

        public Paging(int totalRow, int rowSize, int currentPageNumber, int pageBlockSize)

        {

            int totalPage = (int)Math.Ceiling((double)totalRow / rowSize);

            int currentPageBlock = (int)Math.Ceiling((double)currentPageNumber / pageBlockSize);

            int startPageNumber = ((currentPageBlock - 1) * pageBlockSize) + 1;

            int endPageNumber = (startPageNumber + pageBlockSize) - 1 <= totalPage ? (startPageNumber + pageBlockSize) - 1 : totalPage;


            this.CurrentPageNumber = currentPageNumber;

            this.TotalPage = totalPage;

            this.StartPageNumber = startPageNumber;

            this.EndPageNumber = endPageNumber;

        }


    }


Controler

ViewData["Paging"] = new Paging(board.TotalRow, rowSize, currentPageNumber.Value, pageBlockSize);


View

<% Html.RenderPartial("StyleOfPageNumber", ViewData["Paging"] as Klattermusen.Entity.Board.Paging); %>


Partial View

<%

    string uri = string.Format("/{0}/{1}?"

        , ViewContext.Controller.ValueProvider.GetValue("controller").RawValue

        , ViewContext.Controller.ValueProvider.GetValue("action").RawValue);

    

    string search = string.Format("&searchType={0}&searchWord={1}"

        , HttpContext.Current.Request.QueryString["searchType"]

        , HttpContext.Current.Request.QueryString["searchWord"]);


    string preLink = Model.CurrentPageNumber > 1 ? uri + "currentPageNumber=" + (Model.CurrentPageNumber - 1) : "javascript:alert('이전 페이지가 존재하지 않습니다.');";

    string nextLink = Model.CurrentPageNumber < Model.TotalPage ? uri + "currentPageNumber=" + (Model.CurrentPageNumber + 1) : "javascript:alert('다음 페이지가 존재하지 않습니다.')";

%>


<nav style="text-align:center;">

<ul class="pagination">

   <li><a href="<%= preLink %>" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>


   <% for (int i = Model.StartPageNumber; i <= Model.EndPageNumber; i++) { %>

<% if(Model.CurrentPageNumber == i) { %>

<li><a href="#" style="background-color:#eee;"><strong><%= i %></strong></a></li>

<% } else { %>

<li><a href="<%= uri %>currentPageNumber=<%= i %><%= search %>"><%= i %></a></li>

<% } %>

   <% } %>    


   <li><a href="<%= nextLink %>" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>

</ul>

</nav>








































728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함