コード例 #1
0
ファイル: DynamicLinker.cs プロジェクト: pombreda/Pagination
        public override IEnumerable <IPageLinkModel> LinkPages(IPageRequestModel request, IPageResultsModel results)
        {
            if (null == request)
            {
                throw new ArgumentNullException("request");
            }
            if (null == results)
            {
                throw new ArgumentNullException("results");
            }

            var list = new List <IPageLinkModel>();

            if (results.TotalPageCount > 1)
            {
                var requestedPage  = request.RequestedPage;
                var totalPageCount = results.TotalPageCount;
                var factory        = new LinkFactory(request, IsBase1);

                list.Add(factory.CreateLink(0));

                if (requestedPage > 1)
                {
                    var test = requestedPage == totalPageCount - 1 && totalPageCount > 3;
                    list.Add(factory.CreateRange(1, test ? requestedPage - 3 : requestedPage - 2));
                    if (test)
                    {
                        list.Add(factory.CreateLink(requestedPage - 2));
                    }
                    list.Add(factory.CreateLink(requestedPage - 1));
                }

                if (requestedPage != 0 && requestedPage != totalPageCount - 1)
                {
                    list.Add(factory.CreateLink(requestedPage));
                }

                if (requestedPage < totalPageCount - 2)
                {
                    var test = requestedPage == 0 && totalPageCount > 3;
                    list.Add(factory.CreateLink(requestedPage + 1));
                    if (test)
                    {
                        list.Add(factory.CreateLink(requestedPage + 2));
                    }
                    list.Add(factory.CreateRange(test ? requestedPage + 3 : requestedPage + 2, totalPageCount - 2));
                }

                list.Add(factory.CreateLink(totalPageCount - 1));
            }

            return(list);
        }
コード例 #2
0
        public override IEnumerable<IPageLinkModel> LinkPages(IPageRequestModel request, IPageResultsModel results)
        {
            if (null == request) throw new ArgumentNullException("request");
            if (null == results) throw new ArgumentNullException("results");

            var list = new List<IPageLinkModel>();
            if (results.TotalPageCount > 1) {

                var requestedPage = request.RequestedPage;
                var totalPageCount = results.TotalPageCount;
                var factory = new LinkFactory(request, IsBase1);

                list.Add(factory.CreateLink(0));

                if (requestedPage > 1) {
                    var test = requestedPage == totalPageCount - 1 && totalPageCount > 3;
                    list.Add(factory.CreateRange(1, test ? requestedPage - 3 : requestedPage - 2));
                    if (test) {
                        list.Add(factory.CreateLink(requestedPage - 2));
                    }
                    list.Add(factory.CreateLink(requestedPage - 1));
                }

                if (requestedPage != 0 && requestedPage != totalPageCount - 1) {
                    list.Add(factory.CreateLink(requestedPage));
                }

                if (requestedPage < totalPageCount - 2) {
                    var test = requestedPage == 0 && totalPageCount > 3;
                    list.Add(factory.CreateLink(requestedPage + 1));
                    if (test) {
                        list.Add(factory.CreateLink(requestedPage + 2));
                    }
                    list.Add(factory.CreateRange(test ? requestedPage + 3 : requestedPage + 2, totalPageCount - 2));
                }

                list.Add(factory.CreateLink(totalPageCount - 1));
            }

            return list;
        }