Csharp pagination class

Chaleampolpumpotong
2 min readJan 28, 2021
public class Pagination {
int totalItem,totalPage, perPage, currentPage, firstPage, lastPage, nextPage, prevPage, from, to;
public int TotalItem { get => totalItem; set => totalItem = value; }
public int TotalPage { get => totalPage; set => totalPage = value; }
public int PerPage { get => perPage; set => perPage = value; }
public int CurrentPage { get => currentPage; set => currentPage = value; }
public int FirstPage { get => firstPage; set => firstPage = value; }
public int LastPage { get => lastPage; set => lastPage = value; }
public int NextPage { get => nextPage; set => nextPage = value; }
public int PrevPage { get => prevPage; set => prevPage = value; }
public int From { get => from; set => from = value; }
public int To { get => to; set => to = value; }

public static Pagination NonLoopPaginator(int totalItem, int itemPerpage, int currentPage = 0)
{
Pagination pagination = new Pagination();
pagination.totalItem = totalItem;
pagination.perPage = itemPerpage;
pagination.FirstPage = 0;
pagination.TotalPage = (int)Math.Ceiling((decimal)totalItem / (decimal)itemPerpage);
pagination.LastPage = pagination.TotalPage - 1;
if (currentPage > pagination.LastPage) pagination.CurrentPage = pagination.LastPage;
else if (currentPage < pagination.FirstPage) pagination.CurrentPage = pagination.FirstPage;
else pagination.CurrentPage = currentPage;
pagination.PrevPage = pagination.CurrentPage > 0 ? pagination.CurrentPage - 1 : 0;
pagination.NextPage = pagination.CurrentPage < pagination.LastPage ? pagination.CurrentPage + 1 : pagination.LastPage;
pagination.From = itemPerpage * pagination.CurrentPage;
pagination.To = (pagination.From + itemPerpage) > totalItem ? (totalItem) : (pagination.From + itemPerpage);
return pagination;
}

public static Pagination LoopPaginator(int totalItem, int itemPerpage, int currentPage = 0)
{
Pagination pagination = new Pagination();
pagination.totalItem = totalItem;
pagination.perPage = itemPerpage;
pagination.FirstPage = 0;
pagination.TotalPage = (int)Math.Ceiling((decimal)totalItem / (decimal)itemPerpage);
pagination.LastPage = pagination.TotalPage - 1;
if (currentPage > pagination.LastPage) pagination.CurrentPage = pagination.FirstPage;
else if (currentPage < pagination.FirstPage) pagination.CurrentPage = pagination.lastPage;
else pagination.CurrentPage = currentPage;
pagination.PrevPage = pagination.CurrentPage > 0 ? pagination.CurrentPage - 1 : pagination.LastPage;
pagination.NextPage = pagination.CurrentPage < pagination.LastPage ? pagination.CurrentPage + 1 : pagination.FirstPage;
pagination.From = itemPerpage * pagination.CurrentPage;
pagination.To = (pagination.From + itemPerpage) > totalItem ? (totalItem) : (pagination.From + itemPerpage);
return pagination;
}

public Pagination Next(bool isLoop = false) {
if (isLoop) return LoopPaginator(this.totalItem, this.perPage, this.currentPage + 1);
return NonLoopPaginator(this.totalItem, this.perPage, this.currentPage + 1);
}

public Pagination Prev(bool isLoop = false)
{
if(isLoop) return LoopPaginator(this.totalItem, this.perPage, this.currentPage - 1);
return NonLoopPaginator(this.totalItem, this.perPage, this.currentPage - 1);
}
}

--

--