📄 pagelister.cs
字号:
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Yinde.Cnc.PageLister
{
/// <summary>
/// 数据进行分页的的服务器控件。
/// </summary>
[
DefaultProperty("PageSize"),
DefaultEvent("PageIndexChanged"),
Description("用于ASP.Net Web应用程序的分页控件"),
ToolboxBitmap(typeof(PageLister),"PageLister.bmp")
]
public class PageLister:WebControl,IPostBackEventHandler
{
#region 页码属性
/// <summary>
/// 获取或设置当前显示页的索引。
/// </summary>
[
ReadOnly(true),
Browsable(false),
Description("当前显示页的索引。"),
DefaultValue(1),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public int PageIndex
{
get
{
object obj=ViewState["PageIndex"];
return (obj==null)?1:(int)obj;
}
set
{
int pageIndex=value;
if(pageIndex<1)
pageIndex=1;
else if(pageIndex>PageCount)
pageIndex=PageCount;
ViewState["PageIndex"]=pageIndex;
}
}
/// <summary>
/// 获取或设置要单页上显示的项数。
/// </summary>
[
Browsable(true),
Description("每页显示的记录数。"),
Category("分页"),
DefaultValue(10)
]
public int PageSize
{
get
{
object obj=ViewState["PageSize"];
return (obj==null)?10:(int)obj;
}
set
{
ViewState["PageSize"]=value;
}
}
/// <summary>
/// 获取或设置需要分页的所有记录的总数。
/// </summary>
[
Browsable(false),
Description("要分页的所有记录的总数。"),
DefaultValue(225)
]
public int RecordCount
{
get
{
object obj=ViewState["Recordcount"];
return (obj==null)?225:(int)obj;
}
set
{
ViewState["Recordcount"]=value;
}
}
/// <summary>
/// 获取在本页显示的记录开始的索引。
/// </summary>
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
private int RecordStartIndex
{
get
{
return RecordCount==0?0:(PageIndex-1)*PageSize+1;
}
}
/// <summary>
/// 获取在本页显示的记录结束的索引。
/// </summary>
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
private int RecordEndIndex
{
get
{
return (PageIndex*PageSize>RecordCount)?RecordCount:PageIndex*PageSize;
}
}
/// <summary>
/// 获取所有要分页的总页数。
/// </summary>
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
private int PageCount
{
get
{
return (int)Math.Ceiling((double)RecordCount/(double)PageSize);
}
}
/// <summary>
/// 获得当前页码组的索引
/// </summary>
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
private int GroupIndex
{
get
{
return (int)Math.Ceiling((double)PageIndex/(double)NumericButtonCount);
}
}
/// <summary>
/// 获得页码组的总数
/// </summary>
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
private int GroupCount
{
get
{
return (int)Math.Ceiling((double)PageCount/(double)NumericButtonCount);
}
}
#endregion
#region 样式属性
/// <summary>
/// 获取或设置一个值,该值指示是否在页导航元素中显示第一页和最后一页按钮。
/// </summary>
[
Browsable(true),
Category("样式"),
Description("是否在页导航元素中显示第一页和最后一页按钮。"),
DefaultValue(true)
]
public bool ShowFirstLast
{
get
{
object obj=ViewState["ShowFirstLast"];
return (obj==null)?true:(bool)obj;
}
set
{
ViewState["ShowFirstLast"]=value;
}
}
/// <summary>
/// 获取或设置一个值,该值指示是否在页导航元素中显示上一页和下一页按钮。
/// </summary>
[
Browsable(true),
Category("样式"),
Description("是否在页导航元素中显示上一页和下一页按钮。"),
DefaultValue(true)
]
public bool ShowPrevNext
{
get
{
object obj=ViewState["ShowPreviousNext"];
return (obj==null)?true:(bool)obj;
}
set
{
ViewState["ShowPreviousNext"]=value;
}
}
/// <summary>
/// 获取或设置一个值,该值指示是否在页导航元素中显示页索引数值按钮。
/// </summary>
[
Browsable(true),
Category("样式"),
Description("是否在页导航元素中显示数值按钮。"),
DefaultValue(true)
]
public bool ShowPageIndex
{
get
{
object obj=ViewState["ShowPageIndex"];
return (obj==null)?true:(bool)obj;
}
set
{
ViewState["ShowPageIndex"]=value;
}
}
/// <summary>
/// 获取或设置一个值,该值指定是否显示已禁用的按钮。
/// </summary>
[
Browsable(true),
Category("样式"),
Description("是否显示已禁用的按钮。"),
DefaultValue(true)
]
public bool ShowDisabledButton
{
get
{
object obj=ViewState["ShowDisabledButton"];
return (obj==null)?true:(bool)obj;
}
set
{
ViewState["ShowDisabledButton"]=value;
}
}
/// <summary>
/// 获取或设置为第一页按钮显示的文本。
/// </summary>
[
Browsable(true),
Category("样式"),
Description("第一页按钮上显示的文本。"),
DefaultValue("|<<")
]
public string FirstPageText
{
get
{
object obj=ViewState["FirstPageText"];
return (obj==null)?"|<<":(string)obj;
}
set
{
ViewState["FirstPageText"]=value;
}
}
/// <summary>
/// 获取或设置为上一页按钮显示的文本。
/// </summary>
[
Browsable(true),
Description("上一页按钮上显示的文本。"),
Category("样式"),
DefaultValue("<")
]
public string PrevPageText
{
get
{
object obj=ViewState["PrevPageText"];
return (obj==null)?"<":(string)obj;
}
set
{
ViewState["PrevPageText"]=value;
}
}
/// <summary>
/// 获取或设置为下一页按钮显示的文本。
/// </summary>
[
Browsable(true),
Description("下一页按钮上显示的文本。"),
Category("样式"),
DefaultValue(">")
]
public string NextPageText
{
get
{
object obj=ViewState["NextPageText"];
return (obj==null)?">":(string)obj;
}
set{ViewState["NextPageText"]=value;}
}
/// <summary>
/// 获取或设置为最后一页按钮显示的文本。
/// </summary>
[
Browsable(true),
Description("最后一页按钮上显示的文本。"),
Category("样式"),
DefaultValue(">>|")
]
public string LastPageText
{
get
{
object obj=ViewState["LastPageText"];
return (obj==null)?">>|":(string)obj;
}
set
{
ViewState["LastPageText"]=value;
}
}
/// <summary>
/// 获取或设置页导航元素中同时显示的数值按钮的数目。
/// </summary>
[
Browsable(true),
Category("样式"),
Description("要显示的页索引数值按钮的数目。"),
DefaultValue(10)
]
public int NumericButtonCount
{
get
{
object obj=ViewState["NumericButtonCount"];
return (obj==null)?10:(int)obj;
}
set
{
ViewState["NumericButtonCount"]=value;
}
}
/// <summary>
/// 获取或设置页索引数值导航按钮上文字的显示格式。
/// </summary>
[
Browsable(true),
DefaultValue(""),
Category("样式"),
Description("页索引数值按钮上文字的显示格式。")
]
public string NumericButtonTextFormatString
{
get
{
object obj=ViewState["NumericButtonTextFormatString"];
return (obj==null)?String.Empty:(string)obj;
}
set
{
ViewState["NumericButtonTextFormatString"]=value;
}
}
/// <summary>
/// 获取或设置分页导航按钮之间的间距。
/// </summary>
[
Browsable(true),
Category("样式"),
DefaultValue(typeof(Unit),"5px"),
Description("分页导航按钮之间的间距。")
]
public Unit ButtonSpacing
{
get
{
object obj=ViewState["ButtonSpacing"];
return (obj==null)?Unit.Pixel(5):(Unit.Parse(obj.ToString()));
}
set
{
ViewState["ButtonSpacing"]=value;
}
}
/// <summary>
/// 获取或设置导航按钮的CSS样式文本。
/// </summary>
[
Browsable(true),
Category("样式"),
DefaultValue(""),
Description("应用于导航按钮的CSS样式文本。")
]
public string PageButtonCssClass
{
get
{
object obj=ViewState["PageButtonCssClass"];
return (obj==null)?CssClass:(string)obj;
}
set
{
ViewState["PageButtonCssClass"]=value;
}
}
/// <summary>
/// 获取或设置当前页码导航按钮的CSS样式文本。
/// </summary>
[
Browsable(true),
Category("样式"),
DefaultValue(""),
Description("应用于当前页码导航按钮的CSS样式文本。")
]
public string CurrentPageButtonCssClass
{
get
{
object obj=ViewState["CurrentPageButtonCssClass"];
return (obj==null)?CssClass:(string)obj;
}
set
{
ViewState["CurrentPageButtonCssClass"]=value;
}
}
/// <summary>
/// 获取或设置不可用导航按钮的CSS样式文本。
/// </summary>
[
Browsable(true),
Category("样式"),
DefaultValue(""),
Description("应用于不可用导航按钮的CSS样式文本。")
]
public string DisabledPageButtonCssClass
{
get
{
object obj=ViewState["DisabledPageButtonCssClass"];
return (obj==null)?CssClass:(string)obj;
}
set
{
ViewState["DisabledPageButtonCssClass"]=value;
}
}
#endregion
#region 扩展信息属性
/// <summary>
/// 获取或设置显示扩展信息区的方式。
/// </summary>
[
Browsable(true),
Category("扩展信息"),
Description("显示扩展信息的方式及位置。"),
DefaultValue(ShowExpendInfo.Never)
]
public ShowExpendInfo ShowExpendInfo
{
get
{
object obj=ViewState["ShowExpendInfo"];
return (obj==null)?ShowExpendInfo.Never:(ShowExpendInfo)obj;
}
set{ViewState["ShowExpendInfo"]=value;}
}
/// <summary>
/// 获取或设置用户自定义信息区文本的对齐方式。
/// </summary>
[
Browsable(true),
Category("扩展信息"),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -