103 lines
2.9 KiB
C#
103 lines
2.9 KiB
C#
namespace Szmedi.RvKits.FamilyTools
|
||
{
|
||
public class PageInfo<T>
|
||
{
|
||
private readonly int pageSize;
|
||
public List<T> dataSource;
|
||
public int CurrentIndex { get; set; }
|
||
|
||
public int Pagecount { get; set; }
|
||
|
||
public PageInfo()
|
||
{
|
||
//当前页码
|
||
CurrentIndex = 1;
|
||
}
|
||
|
||
public PageInfo(List<T> dataSource, int pageSize)
|
||
: this()
|
||
{
|
||
this.dataSource = dataSource;
|
||
//每页的数目
|
||
this.pageSize = pageSize;
|
||
//取商
|
||
Pagecount = dataSource.Count / pageSize;
|
||
//如果整除+0,不整除+1
|
||
Pagecount += dataSource.Count % pageSize != 0 ? 1 : 0;
|
||
}
|
||
|
||
public List<T> GetPageData(JumpOperation jo)
|
||
{
|
||
switch (jo)
|
||
{
|
||
case JumpOperation.GoHome:
|
||
CurrentIndex = 1;
|
||
break;
|
||
case JumpOperation.GoPrePrevious:
|
||
if (CurrentIndex > 1)
|
||
{
|
||
CurrentIndex -= 1;
|
||
}
|
||
|
||
break;
|
||
case JumpOperation.GoNext:
|
||
if (CurrentIndex < Pagecount)
|
||
{
|
||
CurrentIndex += 1;
|
||
}
|
||
|
||
break;
|
||
case JumpOperation.GoEnd:
|
||
CurrentIndex = Pagecount;
|
||
break;
|
||
case JumpOperation.GoAny:
|
||
|
||
break;
|
||
}
|
||
|
||
List<T> listPageData = new();
|
||
try
|
||
{
|
||
int pageCountTo = pageSize;
|
||
//页数等于1并且取余大于0(即只有一页时)
|
||
if (Pagecount == CurrentIndex && dataSource.Count % pageSize > 0)
|
||
{
|
||
//pageCountTo=当前条目数
|
||
pageCountTo = dataSource.Count % pageSize;
|
||
}
|
||
|
||
if (null != dataSource)
|
||
{
|
||
for (int i = 0; i < pageCountTo; i++)
|
||
{
|
||
//当前页码-1进行循环,比如有32项时,当前第2页,即从Index=20(第一项Index=0)开始循环
|
||
if (((CurrentIndex - 1) * pageSize) + i < dataSource.Count)
|
||
{
|
||
//将该项添加到listPageData
|
||
listPageData.Add(dataSource[((CurrentIndex - 1) * pageSize) + i]);
|
||
}
|
||
else
|
||
{
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
return listPageData;
|
||
}
|
||
catch
|
||
{
|
||
return listPageData;
|
||
}
|
||
}
|
||
}
|
||
|
||
public enum JumpOperation
|
||
{
|
||
GoHome = 0,
|
||
GoPrePrevious = 1,
|
||
GoNext = 2,
|
||
GoEnd = 3,
|
||
GoAny = 4
|
||
}
|
||
} |