ByteDev.Pagination
1.0.1
dotnet add package ByteDev.Pagination --version 1.0.1
NuGet\Install-Package ByteDev.Pagination -Version 1.0.1
<PackageReference Include="ByteDev.Pagination" Version="1.0.1" />
paket add ByteDev.Pagination --version 1.0.1
#r "nuget: ByteDev.Pagination, 1.0.1"
// Install ByteDev.Pagination as a Cake Addin #addin nuget:?package=ByteDev.Pagination&version=1.0.1 // Install ByteDev.Pagination as a Cake Tool #tool nuget:?package=ByteDev.Pagination&version=1.0.1
ByteDev.Pagination
Provides a simple framework for handling data pagination from within any kind of .NET system.
Installation
ByteDev.Pagination has been written as a .NET Standard 2.0 library, so you can consume it from a .NET Core or .NET Framework 4.6.1 (or greater) application.
ByteDev.Pagination is hosted as a package on nuget.org. To install from the Package Manager Console in Visual Studio run:
Install-Package ByteDev.Pagination
Further details can be found on the nuget page.
Usage
The project is broken into two main namespaces: Data and Presentation.
Data
Types in the Data namespace are concerned with getting a paginatable representation of your required data set.
DataPagingInfo
represents the input data required for pagination by the repository/DAL layer.
EntitiesPagingContainer
represents the output data returned from a repository/DAL layer.
Example usage from within a repository class:
public class CustomerRepository
{
public EntitiesPagingContainer<Customer> GetBySurname(string surname, DataPagingInfo pagingInfo)
{
var count = _dal.Customers.Count(c => c.Surname == surname);
var customers = _dal.Customers.Where(c => c.Surname == surname)
.OrderByDescending(c => c.DateTimeCreated)
.Skip(pagingInfo.Skip)
.Take(pagingInfo.PageSize)
.ToList();
return new EntitiesPagingContainer<Customer>(customers, count, pagingInfo);
}
}
Presentation
Types in the Presentation namespace are concerned with how you wish to handle pagination in the presentation layer/UI.
Once we have got a EntitiesPagingContainer
back from the repository it needs to be converted to a PaginationPageViewModel
. PaginationPageViewModel
represents a container for all the possible requirements for pagination. It can easily be used as a Model for a MVC View/PartialView.
For example:
@model ByteDev.Pagination.Presentation.PaginationPageViewModel
@if (Model.HasMoreThanOnePage)
{
<div>
@if (Model.IsFirstPage)
{
<span><<</span>
<span><</span>
}
else
{
<a href="@Url.Action("Index", "Home", new {pageNumber = Model.FirstPageNumber})"><<</a>
<a href="@Url.Action("Index", "Home", new {pageNumber = Model.PreviousPageNumber})"><</a>
}
@foreach (var pageNumber in Model.PageNavigationNumbers)
{
if (pageNumber.IsCurrentPage)
{
<span>@pageNumber.DisplayNumber</span>
}
else
{
<a href="@Url.Action("Index", "Home", new {pageNumber = pageNumber.Number})">@pageNumber.DisplayNumber</a>
}
}
@if (Model.IsLastPage)
{
<span>></span>
<span>>></span>
}
else
{
<a href="@Url.Action("Index", "Home", new {pageNumber = Model.NextPageNumber})">></a>
<a href="@Url.Action("Index", "Home", new {pageNumber = Model.LastPageNumber})">>></a>
}
</div>
}
For further example details see the ByteDev.Pagination.WebUi project.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.