using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Pcb.Domain;
namespace Pcb.Common
{
///
/// 分页显示类
///
public class Pager
{
///
///
///
/// 当前页
///
///
/// 网址({page}-被自动替换成页码)
public Pager(int PageIndex, int RecordCount, int PageSize, string UrlTemplate)
{
this.RecordCount = RecordCount;
this.PageSize = PageSize;
this.PageIndex = PageIndex;
this.PageCount = (int)Math.Ceiling((float)RecordCount / PageSize);
this.UrlTemplate = UrlTemplate;
}
///
/// 总记录数
///
public int RecordCount { get; set; }
///
/// 每页数量
///
public int PageSize { get; set; }
///
/// 当前页
///
public int PageIndex { get; set; }
///
/// 总页数
///
public int PageCount { get; set; }
///
/// 网址模板
///
public string UrlTemplate { get; set; }
///
/// 获取模板
///
///
///
///
public string GetTemplate(string Template, int Page)
{
var page = Page.ToString();
return Template.Replace("{page}", page).Replace("{url}", GetUrl(page));
}
///
/// 返回网址
///
/// 页码
/// 返回网址
public string GetUrl(int Page)
{
return GetUrl(Page.ToString());
}
///
/// 返回网址
///
/// 页码
/// 返回网址
public string GetUrl(string Page)
{
return UrlTemplate.Replace("{page}", Page);
}
///
/// 获取连续页链接Html
///
/// 当前页前后数
/// 链接模板({url}网址)
/// 非链接模板({url}网址)
/// 返回Html
public string GetTagsByPageNums(int PrevNextCount, string LinkTemplate, string CurrentTemplate, string PrevMoreTemplate = "", string NextMoreTemplate = "")
{
var start = PageIndex - PrevNextCount;
if (start < 1) { start = 1; }
var end = PageIndex + PrevNextCount;
if (end > PageCount) { end = PageCount; }
var sb = new StringBuilder();
if (!string.IsNullOrEmpty(PrevMoreTemplate) && start > 1)
{
sb.Append(GetTemplate(PrevMoreTemplate, start - 1));
}
for (int i = start, c = end + 1; i < c; i++)
{
if (i == PageIndex)
{
sb.Append(GetTemplate(CurrentTemplate, i));
}
else
{
sb.Append(GetTemplate(LinkTemplate, i));
}
}
if (!string.IsNullOrEmpty(NextMoreTemplate) && end < PageCount)
{
sb.Append(GetTemplate(NextMoreTemplate, end + 1));
}
return sb.ToString();
}
///
/// 获取第1页链接Html
///
/// 链接模板({url}网址)
/// 非链接模板({url}网址)
/// 返回Html
public string GetTagsByFirst(string LinkTemplate, string DisableTemplate = "")
{
string htm;
if (PageIndex <= 1)
{
htm = GetTemplate(DisableTemplate, 1);
}
else
{
htm = GetTemplate(LinkTemplate, 1);
}
return htm;
}
///
/// 获取前面Step页链接Html
///
/// 链接模板({url}网址)
/// 非链接模板({url}网址)
/// 返回Html
public string GetTagsByPrevStep(int Step, string LinkTemplate, string DisableTemplate = "")
{
string htm;
var num = PageIndex - Step;
if (num < 1)
{
htm = GetTemplate(DisableTemplate, num);
}
else
{
htm = GetTemplate(LinkTemplate, num);
}
return htm;
}
///
/// 获取最后页链接Html
///
/// 链接模板({url}网址)
/// 非链接模板({url}网址)
/// 返回Html
public string GetTagsByLast(string LinkTemplate, string DisableTemplate = "")
{
string htm;
if (PageIndex >= PageCount)
{
htm = GetTemplate(DisableTemplate, PageCount);
}
else
{
htm = GetTemplate(LinkTemplate, PageCount);
}
return htm;
}
///
/// 获取后面Step页链接Html
///
/// 链接模板({url}网址)
/// 非链接模板({url}网址)
/// 返回Html
public string GetTagsByNextStep(int Step, string LinkTemplate, string DisableTemplate = "")
{
string htm;
var num = PageIndex + Step;
if (num > PageCount)
{
htm = GetTemplate(DisableTemplate, num);
}
else
{
htm = GetTemplate(LinkTemplate, num);
}
return htm;
}
///
/// 获取指定页链接Html
///
/// 链接模板({url}网址)
/// 非链接模板({url}网址)
/// 返回Html
public string GetTagsByPageNo(int Num, string LinkTemplate, string DisableTemplate = "")
{
string htm;
if (Num < 1 && Num > PageCount)
{
htm = GetTemplate(DisableTemplate, Num);
}
else
{
htm = GetTemplate(LinkTemplate, Num);
}
return htm;
}
///
/// 当前页(过期,请使用PageIndex属性)
///
public int GetPageIndex { get { return PageIndex; } }
///
/// 设置网址模板(过期,请使用UrlTemplate属性)
///
///
///
public Pager SetUrlTemplate(string UrlTemplate)
{
this.UrlTemplate = UrlTemplate;
return this;
}
}
}