Paging Model:
public class PagingModel
{
public string TotalItems { get; set; }
public string ItemsPerPage { get; set; }
public string CurrentPage { get; set; }
public string NumberOfPages { get; set; }
public string FirstItem { get; set; }
public string LastItem { get; set; }
public string NextPage { get; set; }
public string NextPageUrl { get; set; }
public string PreviousPage { get; set; }
public string PreviousPageUrl { get; set; }
public string PreviousButtonStyle {
get; set; }
public string NextButtonStyle { get; set; }
}
Helper Class:
public static class PagingExtensions
{
public static PagingModel BuildPagingModel(IEnumerable<object> items, int itemsPerPage, int currentPage, string baseUrl, string queryString)
{
if (items == null || items.Count() < 1 || items.Count() <= itemsPerPage)
{
PagingModel hiddenPagingModel = new PagingModel
{
ShowPaging = false
};
return hiddenPagingModel;
}
if (items == null || items.Count() < 1 || items.Count() <= itemsPerPage)
{
PagingModel hiddenPagingModel = new PagingModel
{
ShowPaging = false
};
return hiddenPagingModel;
}
int firstItem = currentPage * itemsPerPage -
itemsPerPage + 1;
int numberOfPages = (items.Count() %
itemsPerPage == 0) ? items.Count() / itemsPerPage : items.Count() /
itemsPerPage + 1;
PagingModel pagingModel = new PagingModel
{
ItemsPerPage =
itemsPerPage.ToString(),
CurrentPage =
currentPage.ToString(),
TotalItems =
items.Count().ToString(),
FirstItem =
firstItem.ToString(),
LastItem = (firstItem +
itemsPerPage - 1).ToString(),
NumberOfPages =
numberOfPages.ToString(),
NextPage = (currentPage +
1).ToString(),
PreviousPage = (currentPage ==
1) ? "" : (currentPage -
1).ToString(),
NextPageUrl =
(currentPage < numberOfPages) ? UrlHelperExtensions.GetUpdatedUrl(baseUrl,
"page", (currentPage +
1).ToString(), queryString) : "",
PreviousPageUrl = (currentPage
> 1) ? UrlHelperExtensions.GetUpdatedUrl(baseUrl,
"page", (currentPage -
1).ToString(), queryString) : "",
PreviousButtonStyle = "blue",
NextButtonStyle = "blue"
};
//on last page
if(currentPage == numberOfPages)
{
pagingModel.LastItem =
items.Count().ToString();
pagingModel.NextPage = "1";
pagingModel.NextButtonStyle = "gray";
}
//on first page
if (pagingModel.CurrentPage == "1")
{
pagingModel.PreviousButtonStyle
= "gray";
}
return pagingModel;
}
}
In controller:
private string _claimsPageUrl = Sitecore.Configuration.Settings.GetSetting("MemberPortalUrl") + "/claims/claims-landing";
private int _claimsPerPage = 3;
private int _currentPage = 1;
private int _itemsPerPage = 3;
//Paging
if (!string.IsNullOrEmpty(Request.QueryString["page"]))
{
int.TryParse(Request.QueryString["page"], out currentPage);
}
else
{
currentPage = 1;
}
model.Paging = PagingExtensions.BuildPagingModel(model.Newsletters, _itemsPerPage, currentPage, _newslettersPageUrl, Request.QueryString.ToString());
model.Newsletters = model.Newsletters.Skip((currentPage - 1) * _itemsPerPage).Take(_itemsPerPage);
In View:
ViewModel:
public class ClaimsListingDetailModel
{
public string PastMonths { get; set; }
public string CurrentMember { get; set; }
public Member Member { get; set; }
public IEnumerable<Claim> Claims { get; set; }
public SelectList TimeRange { get; set; }
public SelectList MemberList { get; set; }
public bool Authorized { get; set; }
public PagingModel Paging { get; set; }
}
<div class="heading-group no-shrink
pagination-area">
<span class="portal-label
heading-group">Claims @Model.Paging.FirstItem
- @Model.Paging.LastItem
<span class="portal-label-subtle">of @Model.Paging.TotalItems</span></span>
<span class="heading-group">
<a class="svgicon
icon-back-arrow-@Model.Paging.PreviousButtonStyle" href="@Model.Paging.PreviousPageUrl"></a>
<a class="svgicon
icon-forward-arrow-@Model.Paging.NextButtonStyle" href="@Model.Paging.NextPageUrl"></a>
</span>
</div>
No comments:
Post a Comment