Created
October 20, 2017 20:29
-
-
Save marciogoularte/a4408b7b79c681dcbe7bf6fadc9f2fbf to your computer and use it in GitHub Desktop.
Pagination Umbraco
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@model OurUmbraco.ViewModels.Pager | |
@{ | |
var IsBreak = false; | |
var querystring = Model.QueryString; | |
} | |
@if (Model.TotalPages > 1) | |
{ | |
<div class="pagination"> | |
@if (Model.CurrentPage > 1) | |
{ | |
querystring.Set("p", (Model.CurrentPage - 1).ToString()); | |
<a class="prev page-numbers" href="?@querystring.ToString()"><i class="fa fa-angle-left"></i>Anterior</a> | |
} | |
@for (int p = 1; p < Model.TotalPages + 1; p++) | |
{ | |
querystring.Set("p", p.ToString()); | |
var linkClass = (p == Model.CurrentPage) ? "" : "current"; | |
if (p == Model.CurrentPage) | |
{ | |
<a class="page-numbers @Html.Raw(linkClass)" href="?@querystring.ToString()">@p</a> | |
IsBreak = false; | |
} | |
else | |
{ | |
if (p == 1 | |
|| p == Model.CurrentPage - 1 | |
|| p == Model.CurrentPage + 1 | |
|| p == Model.TotalPages - 1 | |
|| p == Model.TotalPages) | |
{ | |
querystring.Set("p", p.ToString()); | |
<a class="page-numbers @Html.Raw(linkClass)" href="?@querystring.ToString()">@p</a> | |
IsBreak = false; | |
} | |
else | |
{ | |
if (IsBreak) | |
{ | |
continue; | |
} | |
else | |
{ | |
<a class="page-numbers dots" href="#">...</a> | |
IsBreak = true; | |
} | |
} | |
} | |
} | |
@if (Model.CurrentPage < Model.TotalPages) | |
{ | |
querystring.Set("p", (Model.CurrentPage + 1).ToString()); | |
<a class="next page-numbers" href="?@querystring.ToString()">Próximo<i class="fa fa-angle-right"></i></a> | |
} | |
</div> | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections.Specialized; | |
namespace OurUmbraco.ViewModels | |
{ | |
public class Pager | |
{ | |
public string Next { get; set; } | |
public string Previous { get; set; } | |
public int TotalPages { get; set; } | |
public int CurrentPage { get; set; } | |
public int PageSize { get; set; } | |
public int Total { get; set; } | |
public NameValueCollection QueryString { get; set; } | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage | |
@using OurUmbraco.ViewsModels | |
@{ | |
Layout = "Layout.cshtml"; | |
IEnumerable<IPublishedContent> items; | |
var pager = new Pager(); | |
pager.PageSize = 10; | |
int page; | |
//get querystring parameter page and filters | |
pager.QueryString = HttpUtility.ParseQueryString(Request.QueryString.ToString()); | |
if (!int.TryParse(Request.QueryString["p"], out page)) | |
{ | |
pager.CurrentPage = 1; | |
} | |
pager.CurrentPage = page; | |
items = Model.Content.DescendantsOrSelf("docType").Where(x => x.IsVisible()).OrderByDescending(x => x.CreateDate); | |
pager.Total = items.Count(); | |
items = items.Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize).ToList(); | |
pager.TotalPages = (int)Math.Ceiling((double)pager.Total / (double)pager.PageSize); | |
if (pager.CurrentPage > pager.TotalPages) | |
{ | |
pager.CurrentPage = pager.TotalPages; | |
} | |
else if (pager.CurrentPage < 1) | |
{ | |
pager.CurrentPage = 1; | |
} | |
} | |
@foreach (var item in items) | |
{ | |
//HTML Markup | |
} | |
@Html.Partial("_Pager", pager) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment