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; } } }