namespace Code{using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;public class PagingInfo{private int _pageCount = 0;private int _pageIndex = 0;private int _pageSize = 0;private int _pageGroupCount = 0;private int _pageGroupIndex = 0;private int _pageGroupSize = 0;private int _itemIndex = 0;private int _itemIndexOnPage = 0;private int _itemCount = 0;private bool _isFirstPage = true;private bool _isLastPage = true;private bool _isFirstItem = true;private bool _isLastItem = true;private bool _isFirstItemOnPage = true;private bool _isLastItemOnPage = true;public PagingInfo(int pageSize, int pageGroupSize, int itemCount){_pageSize = pageSize;_pageGroupSize = pageGroupSize;_itemCount = itemCount;Recalculate();}public static IEnumerable<keyvaluepair<int, t="">> EnumerateThroughPage(PagingInfo pagingInfo, IList list){for (int i = pagingInfo.PageFirstItemIndex; i <= pagingInfo.PageLastItemIndex; i += 1){yield return new KeyValuePair<int, t="">(i, list[i]);}}public IEnumerable<keyvaluepair<int, t="">> EnumerateThroughPageList(IList list){for (int i = this.PageFirstItemIndex; i <= this.PageLastItemIndex; i += 1){yield return new KeyValuePair<int, t="">(i, (T)list[i]);}}public IEnumerable<keyvaluepair<int, t="">> EnumerateThroughPage(IList list){for (int i = this.PageFirstItemIndex; i <= this.PageLastItemIndex; i += 1){yield return new KeyValuePair<int, t="">(i, list[i]);}}public IEnumerable EnumerateThroughPageItemIndex(){for (int i = this.PageFirstItemIndex; i <= this.PageLastItemIndex; i += 1){yield return i;}}public void SetPageIndex(int pageIndex){if (!IsPageIndexValid(pageIndex)){pageIndex = 0;}// Set the itemIndex to the first item on that pageif (_pageCount < 1) { _pageCount = 1; }if (_pageSize == 0){SetItemIndex(0);}else{SetItemIndex(pageIndex * _pageSize);}}public void SetItemIndex(int itemIndex){_itemIndex = itemIndex;Recalculate();}public void SetItemCount(int itemCount){_itemCount = itemCount;Recalculate();}public void Recalculate(){// IN// Validateif (_itemCount < 0) { _itemCount = 0; }if (_itemIndex < 0 || _itemIndex > ItemCount) { _itemIndex = 0; }if (_pageSize < 0) { _pageSize = 0; }if (_pageGroupSize < 0) { _pageGroupSize = 0; }// OUTif (_pageSize == 0){_pageCount = 1;}else{_pageCount = (_itemCount + _pageSize - 1) / _pageSize;}if (_pageSize == 0){_pageIndex = 0;}else{_pageIndex = (_itemIndex / _pageSize);}if (_pageGroupSize == 0){_pageGroupCount = 1;}else{_pageGroupCount = (_pageCount + _pageGroupSize - 1) / _pageGroupSize;}if (_pageGroupSize == 0){_pageGroupIndex = 0;}else{_pageGroupIndex = (_pageIndex / _pageGroupSize);}if (_pageSize == 0){_itemIndexOnPage = _itemIndex;}else{_itemIndexOnPage = (_itemIndex % _pageSize);}_isFirstPage = (_pageIndex == 0);_isLastPage = (_pageIndex + 1 == _pageCount);_isFirstItem = (_itemIndex == 0);_isLastItem = (_itemIndex + 1 == _itemCount);_isFirstItemOnPage = (_itemIndexOnPage == 0);_isLastItemOnPage = (_itemIndexOnPage == _pageSize - 1) || _isLastItem;}public int GetFirstPageOfGroup(int pageGroupIndex){return pageGroupIndex * _pageGroupSize;}public int GetLastPageOfGroup(int pageGroupIndex){return ((pageGroupIndex+1) * _pageGroupSize) - 1;}public int PageNumber { get { return _pageIndex+1; } }public int PageCount { get { return _pageCount; } }public int PageIndex { get { return _pageIndex; } }public int PageSize { get { return _pageSize; } }public int PageGroupCount { get { return _pageGroupCount; } }public int PageGroupIndex { get { return _pageGroupIndex; } }public int PageGroupSize { get { return _pageGroupSize; } }public bool HasPrevPage { get { return (PageIndex > 0); } }public bool HasNextPage { get { return (PageCount > PageIndex+1); } }public bool HasPrevPageGroup { get { return (PageGroupIndex > 0); } }public bool HasNextPageGroup { get { return (PageGroupCount > PageGroupIndex+1); } }public bool IsFirstPage { get { return _isFirstPage; } }public bool IsLastPage { get { return _isLastPage; } }public int ItemIndex { get { return _itemIndex; } }public int ItemIndexOnPage { get { return _itemIndexOnPage; } }public int ItemCount { get { return _itemCount; } }public bool IsFirstItem { get { return _isFirstItem; } }public bool IsLastItem { get { return _isLastItem; } }public bool IsFirstItemOnPage { get { return _isFirstItemOnPage; } }public bool IsLastItemOnPage { get { return _isLastItemOnPage; } }public int PageFirstItemIndex { get { return PageIndex * PageSize; } }public int PageLastItemIndex { get { return Math.Min(ItemCount-1, ((PageIndex+1) * PageSize) - 1); } }public int PrevPageIndex { get { if (HasPrevPage) { return _pageIndex - 1; } else { return _pageIndex; } } }public int NextPageIndex { get { if (HasNextPage) { return _pageIndex + 1; } else { return _pageIndex; } } }public bool IsPageIndexValid(int pageIndex){return (pageIndex >= 0 && PageCount > pageIndex);}}}
10600cookie-checkC# PagingHelper class