/*
ASP.NET UrlPager control
Copyright:2009-2010 Webdiyer (http://www.webdiyer.com)
Source code released under Ms-PL license
*/
using System;
using System.ComponentModel;
using System.Web.Routing;
namespace Webdiyer.WebControls
{
public partial class UrlPager
{
#region fields
private const string CopyrightText =
"<!--ASP.NET UrlPager 1.0 Copyright:2010 Webdiyer(http://www.webdiyer.com)-->";
private static readonly object EventPageChanged = new object();
#endregion
#region public properties
/// <summary>
/// 获取或设置UrlPager分页控件要使用的路由表中的路由名称
/// </summary>
public string RouteName
{
get
{
object obj = ViewState["RouteValue"];
return (string)obj;
}
set { ViewState["RouteValue"] = value; }
}
/// <summary>
/// 获取或设置要应用到当前路由中的路由值(键/值对)
/// </summary>
[Browsable(true)]
public RouteValueDictionary RouteValues { get
{
object obj = ViewState["RouteValues"];
return (RouteValueDictionary)obj;
}
set { ViewState["RouteValues"] = value; }
}
/// <summary>
/// 获取或设置一个值,该值指示是否继续当前页面中的路由值,如果该值为true,则当前页面的路由值也将被加入到RouteValues属性中
/// </summary>
[DefaultValue(false)]
public bool InheritsRouteValues
{
get
{
object obj = ViewState["InheritsRouteValues"];
return obj == null ? false : (bool)obj;
}
set
{
ViewState["InheritsRouteValues"] = value;
}
}
/// <summary>
/// 获取或设置要分页的记录总数
/// </summary>
[Browsable(false)]
public int TotalItemCount
{
get
{
object obj = ViewState["TotalItemCount"];
return obj == null ? 0 : (int)obj;
}
set
{
int count = value;
if (value < 0)
count = 0;
ViewState["TotalItemCount"] = count;
}
}
/// <summary>
/// 获取或设置每页显示的记录数
/// </summary>
[DefaultValue(10)]
public int PageSize
{
get
{
object obj = ViewState["PageSize"];
return obj == null ? 10 : (int)obj;
}
set
{
int pageSize = value;
if (value <= 0)
pageSize = 10;
ViewState["PageSize"] = pageSize;
}
}
/// <summary>
/// 获取或设置一个值,该值指示要分页的总记录数不只有一页时是否自动隐藏分页控件
/// </summary>
[DefaultValue(true)]
public bool AutoHide
{
get
{
object obj = ViewState["AutoHide"];
return obj == null ? true : (bool)obj;
}
set
{
ViewState["AutoHide"] = value;
}
}
/// <summary>
/// 获取或设置url中当前页索引的参数名,如果该参数名在路由中不存在,则参数将被添被添加到url的QueryString参数中
/// </summary>
[DefaultValue("pageIndex"),Browsable(true)]
public string PageIndexParameterName
{
get
{
object obj = ViewState["PageIndexParameterName"];
return obj == null ? "pageIndex" : (string)obj;
}
set { ViewState["PageIndexParameterName"] = value; }
}
/// <summary>
/// 获取或设置分页控件显示的数字页索引的格式字符串
/// </summary>
[DefaultValue(null)]
public string PageNumberFormatString
{
get{return (string)ViewState["PageNumberFormatString"];}
set { ViewState["PageNumberFormatString"] = value; }
}
/// <summary>
/// 获取或设置所有分页元素(数字页索引及上页、下页、首页和尾页等)容器格式字符串
/// ToDo:此属性未使用
/// </summary>
[DefaultValue("{0} ")]
public string PagerItemWrapperFormatString
{
get
{
object obj = ViewState["PagerItemWrapperFormatString"];
return obj == null ? "{0} " : (string)obj;
}
set { ViewState["PagerItemWrapperFormatString"] = value; }
}
/// <summary>
/// 获取或设置当前页索引文本格式字符串
/// </summary>
public string CurrentPageNumberFormatString
{
get{return (string)ViewState["CurrentPageNumberFormatString"];}
set { ViewState["CurrentPageNumberFormatString"] = value; }
}
/// <summary>
/// 获取或设置数字页索引容器格式字符串
/// </summary>
[DefaultValue("{0} ")]
public string NumericPagerItemWrapperFormatString
{
get
{
object obj = ViewState["NumericPagerItemWrapperFormatString"];
return obj == null ? PagerItemWrapperFormatString : (string)obj;
}
set { ViewState["NumericPagerItemWrapperFormatString"] = value; }
}
/// <summary>
/// 获取或设置当前页索引容器格式字符串
/// </summary>
[DefaultValue("{0} ")]
public string CurrentPagerItemWrapperFormatString
{
get
{
object obj = ViewState["CurrentPagerItemWrapperFormatString"];
return obj == null ? PagerItemWrapperFormatString : (string)obj;
}
set { ViewState["CurrentPagerItemWrapperFormatString"] = value; }
}
/// <summary>
/// 获取或设置上页、下页、首页和尾页四个分页元素容器格式字符串
/// </summary>
[DefaultValue("{0} ")]
public string NavigationPagerItemWrapperFormatString
{
get
{
object obj = ViewState["NavigationPagerItemWrapperFormatString"];
return obj == null ? PagerItemWrapperFormatString : (string)obj;
}
set { ViewState["NavigationPagerItemWrapperFormatString"] = value; }
}
/// <summary>
/// 获取或设置更多页分页元素容器格式字符串
/// </summary>
[DefaultValue("{0} ")]
public string MorePagerItemWrapperFormatString
{
get
{
object obj = ViewState["MorePagerItemWrapperFormatString"];
return obj == null ? PagerItemWrapperFormatString : (string)obj;
}
set { ViewState["MorePagerItemWrapperFormatString"] = value; }
}
/// <summary>
/// 获取或设置一个值,该值指示是否总是显示第一页和最后一页数字页索引
/// </summary>
[DefaultValue(false)]
public bool AlwaysShowFirstLastPageNumber
{
get
{
object obj = ViewState["AlwaysShowFirstLastPageNumber"];
return obj == null ? false : (bool)obj;
}
set
{
ViewState["AlwaysShowFirstLastPageNumber"] = value;
}
}
/// <summary>
/// 获取或设置分页控件显示的数字页索引的数目
/// </summary>
[DefaultValue(10)]
public int NumericPagerItemCount
{
get
{
object obj = ViewState["NumericPagerItemCount"];
return obj == null ? 10 : (int)obj;
}
set { ViewState["NumericPagerItemCount"] = value; }
}
/// <summary>
/// 获取或设置一个值,该值指示是否显示前一页和后一页分页元素
/// </summary>
[DefaultValue(true)]
public bool ShowPrevNext
{
get
{
object obj = ViewState["ShowPrevNext"];
return obj == null ? true : (bool)obj;
}
set
{
ViewState["ShowPrevNext"] = value;
}
}
/// <summary>
/// 获取或设置前一页分页元素显示的文本
/// </summary>
[DefaultValue("上一页")]
public string PrevPageText
{
get
{
string txt = (string)ViewState["PrevPageText"];
return string.IsNullOrEmpty(txt) ? "上一页" : txt;
}
set { ViewState["PrevPageText"] = value; }
}
/// <summary>
/// 获取或设置后一页分页元素显示的文本
/// </summary>
[DefaultValue("下一页")]
public string NextPageText
{
get
{
string txt = (string)ViewState["NextPageText"];
return string.IsNullOrEmpty(txt) ? "下一页" : txt;
}
set { ViewState["NextPageText"] = value; }
}
/// <summary>
/// 获取或设置一个值,该值指示是否显示数字页索引分页元素
/// </summary>
[DefaultValue(true)]
public bool ShowNumericPagerItems
{
get
{
object obj = ViewState["ShowNumericPagerItems"];
return obj == null ? true : (bool)obj;
}
set
{
ViewState["ShowNumericPagerItems"] = value;
}
}
/// <summary>
/// 获取或设置一个值,该值指示是否显示首页和尾页分页元素
/// </summary>
[DefaultValue(true)]
public bool ShowFirstLast
{
get
{
object obj = ViewState["ShowFirstLast"];
return obj == null ? true : (bool)obj;
}
set
{
ViewState["ShowFirstLast"] = value;
}
}
/// <summary>
/// 获取或设置首页分页元素显示的文本
/// </summary>
[DefaultValue("首页")]
public string FirstPageText
{
get
{
string txt = (string)ViewState["FirstPageText"];
return string.IsNullOrEmpty(txt) ? "首页" : txt;
}
set { ViewState["FirstPageText"] = value; }
}
/// <summary>
/// 获取或设置尾页分页元素显示的文本
/// </summary>
[DefaultValue("尾页")]
public string LastPageText
{
get
{
string txt = (string)ViewState["LastPageText"];
return string.IsNullOrEmpty(txt) ? "尾页" : txt;
}
set { ViewState["LastPageText"] = value; }
}
/// <summary>
/// 获取或设置一个值,该值指示是否显示更多页分页元素
/// </summary>
[DefaultValue(true)]
public bool ShowMorePagerItems
{
get
{
object obj = ViewState["ShowMorePagerItems"];
return obj == null ? true : (bool)obj;
}
set
{
ViewState["ShowMorePagerItems"] = value;
}
}
/// <summary>
/// 获取或设置更多页分页元素显示的文本
/// </summary>
[DefaultValue("...")]
public string MorePageText
{
get
{
string txt = (string)ViewState["MorePageText"];
return string.IsNullOrEmpty(txt) ? "..." : txt;
}
set { ViewState["MorePageText"] = value; }
}
/// <summary>
/// 获取或设置一个值,该值指示是否显示不活动的分页元素(当前页为第一页时为首页和前一页,当前页为最后一页时为尾页和后一页)
/// </summary>
[DefaultValue(true)]
public bool ShowInactivePagerItems
{
get
{
object obj = ViewState["ShowInactivePagerItems"];
return obj == null ? true : (bool)obj;
}
set
{
ViewState["ShowInactivePagerItems"] = value;
}
}
/// <summary>
/// 获取或设置当前页索引
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int CurrentPageIndex
{
get
{
object cpage = ViewState["CurrentPageIndex"];
int pindex = (cpage == null) ? 1 : (int)cpage;
if (pindex > PageCount && PageCount > 0)
return PageCount;
if (pindex < 1)
return 1;
return pindex;
}
set
{
int cpage = value;
if (cpage < 1)
cpage = 1;
else if (cpage > PageCount)
cpage = PageCount;
ViewState["CurrentPageIndex"] = cpage;
}
}
/// <summary>
/// 获取当前页的起始记录索引
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int StartRecordIndex
{
get
{
return (CurrentPageIndex - 1) * PageSize + 1;
}
}
/// <summary>
/// 获取当前页的结束记录索引
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int EndRecordIndex
{
get
{
if (CurrentPageIndex < PageCount)
return (CurrentPageIndex * PageSize);
return TotalItemCount;
}
}
/// <summary>
/// 获取要分页的数据的总页数
/// </summary>
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int PageCount
{
get
{
if (TotalItemCount == 0)
return 1;
return (int)Math.Ceiling((double)TotalItemCount / (double)PageSize);
}
}
#endregion
}
}