📄 fy.txt
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Collections.Specialized;
namespace SkyDream
{
public enum DisplayType
{
Block,
Inline
}
[System.ComponentModel.Designer(typeof(PagerDesigner))]
[ToolboxData("<{0}:SkyDreamPager runat=server></{0}:SkyDreamPager>")]
public class SkyDreamPager : Control
{
protected const string VSKEY_ITEMCOUNT = "ItemCount";
protected const string VSKEY_PAGEINDEX = "PageIndex";
protected const string VSKEY_PAGESIZE = "PageSize";
protected const string VSKEY_DISPLAYPAGES = "DisplayPages";
protected const int FIRST_PAGE_INDEX = 1;
protected const int PAGESIZE_MIN = 1;
protected const int PAGESIZE_DEFAULT = 20;
protected const int DISPLAYPAGES_MIN = 3;
protected const int DISPLAYPAGES_DEFAULT = 10;
protected const string SPACER_DEFAULT = " ";
protected const string FIRSTTEXT_DEFAULT = "首页";
protected const string LASTTEXT_DEFAULT = "末页";
protected const string PREFIXTEXT_DEFAULT = "上一页";
protected const string SUFFIXTEXT_DEFAULT = "下一页";
protected const string LINKFORMAT_DEFAULT = "<a href=\"{0}\">[{1}]</a>";
protected const string LINKFORMAT_ACTIVE_DEFAULT = "<font class=\"Current\">{0}</font>";
protected const string URLFORMAT_DEFAULT = "?page={0}";
protected const string QUERYSTRINGPAGEINDEX_DEFAULT = "page";
protected DisplayType _displayMode = DisplayType.Block;
protected string _cssClass="";
protected bool _useSpacer = true;
protected string _spacer;
protected string _urlFormat = URLFORMAT_DEFAULT;
protected string _linkFormat = LINKFORMAT_DEFAULT;
protected string _linkFormatActive = LINKFORMAT_ACTIVE_DEFAULT;
protected bool _useFirstLast = true;
protected string _firstText = FIRSTTEXT_DEFAULT;
protected string _lastText = LASTTEXT_DEFAULT;
protected bool _usePrefixSuffix = true;
protected string _prefixText = PREFIXTEXT_DEFAULT;
protected string _suffixText = SUFFIXTEXT_DEFAULT;
private string _queryStringPageIndex = QUERYSTRINGPAGEINDEX_DEFAULT;
protected bool _isDisplayOnePage = true;
public SkyDreamPager()
{
ViewState[VSKEY_ITEMCOUNT] = 0;
ViewState[VSKEY_PAGEINDEX] = FIRST_PAGE_INDEX;
ViewState[VSKEY_PAGESIZE] = PAGESIZE_DEFAULT;
this.DisplayPages = DISPLAYPAGES_DEFAULT;
}
public bool IsDisplayOnePage
{
get { return _isDisplayOnePage; }
set { _isDisplayOnePage = value; }
}
public DisplayType DisplayMode
{
get { return _displayMode; }
set { _displayMode = value; }
}
public string CssClass
{
get { return _cssClass; }
set { _cssClass = value; }
}
public int ItemCount
{
get
{
return (int)ViewState[VSKEY_ITEMCOUNT];
}
set
{
if (value < 0)
ViewState[VSKEY_ITEMCOUNT] = 0;
else
ViewState[VSKEY_ITEMCOUNT] = value;
}
}
public int PageIndex
{
get
{
return (int)ViewState[VSKEY_PAGEINDEX];
}
set
{
if (value >= FIRST_PAGE_INDEX)
ViewState[VSKEY_PAGEINDEX] = value;
else
ViewState[VSKEY_PAGEINDEX] = FIRST_PAGE_INDEX;
}
}
public int PageSize
{
get
{
return (int)ViewState[VSKEY_PAGESIZE];
}
set
{
if (value >= PAGESIZE_MIN)
ViewState[VSKEY_PAGESIZE] = value;
else
ViewState[VSKEY_PAGESIZE] = PAGESIZE_MIN;
}
}
public int MaxPages
{
get
{
if (PageSize > 0)
return (int)Math.Ceiling((double)ItemCount / PageSize);
else
return 0;
}
}
public int DisplayPages
{
get
{
return (int)ViewState[VSKEY_DISPLAYPAGES];
}
set
{
int displayPages = value;
if (displayPages < DISPLAYPAGES_MIN)
displayPages = DISPLAYPAGES_MIN;
ViewState[VSKEY_DISPLAYPAGES] = displayPages;
}
}
public string Spacer
{
get
{
if (null == _spacer || _spacer.Length == 0)
_spacer = SPACER_DEFAULT;
return _spacer;
}
set { _spacer = value; }
}
public bool UseSpacer
{
get { return _useSpacer; }
set { _useSpacer = value; }
}
public string UrlFormat
{
get { return _urlFormat; }
set { _urlFormat = value; }
}
public string LinkFormat
{
get { return _linkFormat; }
set { _linkFormat = value; }
}
public string LinkFormatActive
{
get { return _linkFormatActive; }
set { _linkFormatActive = value; }
}
public bool UseFirstLast
{
get { return _useFirstLast; }
set { _useFirstLast = value; }
}
public string FirstText
{
get { return _firstText; }
set { _firstText = value; }
}
public string LastText
{
get { return _lastText; }
set { _lastText = value; }
}
public bool UsePrefixSuffix
{
get { return _usePrefixSuffix; }
set { _usePrefixSuffix = value; }
}
public string SuffixText
{
get { return _suffixText; }
set { _suffixText = value; }
}
public string PrefixText
{
get { return _prefixText; }
set { _prefixText = value; }
}
public string QueryStringPageIndex
{
get { return _queryStringPageIndex; }
set { _queryStringPageIndex = value; }
}
protected override void Render(HtmlTextWriter writer)
{
if (!_isDisplayOnePage && MaxPages == 1)
{
writer.Write("");
}
else
{
if (_cssClass.Length > 0)
writer.AddAttribute("class", _cssClass);
if (_displayMode == DisplayType.Block)
writer.RenderBeginTag(HtmlTextWriterTag.Div);
else if (_displayMode == DisplayType.Inline)
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.Write(GetPagesInfo());
writer.RenderEndTag();
}
}
#region 是否数字字符串
private bool IsNumber(string inputData)
{
if (inputData.Length < 10)
{
Regex RegNumber = new Regex("^[0-9]+$");
Match m = RegNumber.Match(inputData);
return m.Success;
}
else
return false;
}
#endregion
#region 处理查询字符串
public string GetQueryString(System.Web.UI.Page page)
{
string url = page.Request.RawUrl.ToString();
int pos = url.IndexOf("?");
StringBuilder sb = new StringBuilder();
sb.Append(_urlFormat);
sb.Append("?");
if (pos != -1)//带参数
{
//处理参数
NameValueCollection coll = page.Request.QueryString;
string[] arr1 = coll.AllKeys;
for (int i = 0; i < arr1.Length; i++)
{
if (arr1[i].Trim() != _queryStringPageIndex)
{
string[] arr2 = coll.GetValues(arr1[i]);
sb.Append(arr1[i].Trim());
sb.Append("=");
sb.Append(page.Server.UrlEncode(arr2[arr2.Length - 1].Trim()));
sb.Append("&");
}
}
}
sb.Append(_queryStringPageIndex);
sb.Append("={0}");
return sb.ToString();
}
#endregion
#region 获取请求页号
public int GetPageIndex(System.Web.UI.Page page)
{
if (page.Request.QueryString[_queryStringPageIndex] != null)
{
string tmpPageIndex = page.Request.QueryString[_queryStringPageIndex].ToString().Trim();
if (IsNumber(tmpPageIndex))
{
if (int.Parse(tmpPageIndex) < 0 || int.Parse(tmpPageIndex) > MaxPages)
return 1;
else
return int.Parse(tmpPageIndex);
}
}
return 1;
}
#endregion
#region 分页信息
private string GetPagesInfo()
{
StringBuilder pagesInfo = new StringBuilder();
if (PageIndex > MaxPages)
PageIndex = MaxPages;
int begin = PageIndex - DisplayPages / 2;
int end = PageIndex + DisplayPages / 2;
if (DisplayPages % 2 == 0)
begin--;
if (begin <= 0)
{
begin = 1;
}
if (MaxPages <= DisplayPages)
{
begin = 1;
end = MaxPages;
}
else
{
if (end > MaxPages)
{
end = MaxPages;
begin = MaxPages - DisplayPages + 1;
}
else
{
if (end < DisplayPages)//结束页面小于显示页码时
end = DisplayPages;
}
}
if (PageIndex > 1 && UseFirstLast)//首页
{
pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, 1), _firstText));
if (_useSpacer)
pagesInfo.Append(_spacer);
}
if (PageIndex > 1 && UsePrefixSuffix)//向前翻
{
pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, PageIndex - 1), _prefixText));
if (_useSpacer)
pagesInfo.Append(_spacer);
}
for (int i = begin; i <= end; i++)//页数
{
if (i == PageIndex)
pagesInfo.Append(string.Format(_linkFormatActive, PageIndex));
else
pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, i), i));
if (_useSpacer)
pagesInfo.Append(_spacer);
}
if (PageIndex < MaxPages && UsePrefixSuffix) //向后翻
{
pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, PageIndex + 1), _suffixText));
if (_useSpacer)
pagesInfo.Append(_spacer);
}
if (PageIndex < MaxPages && UseFirstLast)//末页
{
pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, MaxPages), _lastText));
if (_useSpacer)
pagesInfo.Append(_spacer);
}
return pagesInfo.ToString();
}
#endregion
}
public class PagerDesigner : System.Web.UI.Design.ControlDesigner
{
public override string GetDesignTimeHtml()
{
return base.GetDesignTimeHtml();
}
public override void Initialize(System.ComponentModel.IComponent component)
{
if (component is SkyDreamPager)
{
SkyDreamPager context = component as SkyDreamPager;
context.PageSize = 10;
context.ItemCount = 120;
context.PageIndex++;
}
base.Initialize(component);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -