//此源代码仅供学习参考,不得用作任何商业用途;
//若需修改并重新编译该控件,请保留完整的源代码的版权信息!
//有关控件升级及新控件发布信息,请留意 www.webdiyer.com 。
using System;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
namespace Wuqi.Webdiyer
{
#region AspNetPager Server Control
#region 控件说明及示例
///
/// 用于ASP.NET Web应用程序中对数据进行分页的的服务器控件。
///
///
///
AspNetPager 2.0 中新增了通过Url来分页的功能,这使得访问者可以直接输入相应的Url来访问任何页面,并且搜索引擎也可以直接检索每个页面,若使用DataGrid的分页功能,这是无法实现的。
///
要使用 AspNetPager 分页控件,必须最少指定它的
///
/// 若未指定并编写
/// AspNetPager控件的分页方法和DataGrid基本相同,即在它的
///
///
///<%@ Page Language="C#"%>
///<%@ Import Namespace="System.Data"%>
///<%@Import Namespace="System.Data.SqlClient"%>
///<%@Import Namespace="System.Configuration"%>
///<%@Register TagPrefix="Webdiyer" Namespace="Wuqi.Webdiyer" Assembly="aspnetpager"%>
///
///
///Welcome to Webdiyer.com
///
///
///
///
///
///
///
///
///
///
/// ]]>
///
///
下面是该示例所用的Sql Server存储过程:
///
/// ///CREATE procedure GetNews
/// (@pagesize int,
/// @pageindex int,
/// @docount bit)
/// as
/// set nocount on
/// if(@docount=1)
/// select count(id) from news
/// else
/// begin
/// declare @indextable table(id int identity(1,1),nid int)
/// declare @PageLowerBound int
/// declare @PageUpperBound int
/// set @PageLowerBound=(@pageindex-1)*@pagesize
/// set @PageUpperBound=@PageLowerBound+@pagesize
/// set rowcount @PageUpperBound
/// insert into @indextable(nid) select id from news order by addtime desc
/// select O.id,O.source,O.title,O.addtime from news O,@indextable t where O.id=t.nid
/// and t.id>@PageLowerBound and t.id < = @PageUpperBound order by t.id
/// end
/// set nocount off
///GO
/// ]]>
///
#endregion
[DefaultProperty("PageSize")]
[DefaultEvent("PageChanged")]
[ParseChildren(false)]
[PersistChildren(false)]
[Description("专用于ASP.Net Web应用程序的分页控件")]
[Designer(typeof(PagerDesigner))]
[ToolboxData("<{0}:AspNetPager runat=server>{0}:AspNetPager>")]
public class AspNetPager:Panel,INamingContainer,IPostBackEventHandler,IPostBackDataHandler
{
private string cssClassName;
private string urlPageIndexName="page";
private bool urlPaging=false;
private string inputPageIndex;
private string currentUrl=null;
private NameValueCollection urlParams=null; #region Properties #region Navigation Buttons ///
/// 获取或设置一个值,该值批示当鼠标指针悬停在导航按钮上时是否显示工具提示。
///
[Browsable(true),
Category("导航按钮"), DefaultValue(true), Description("指定当鼠标停留在导航按钮上时,是否显示工具提示")]
public bool ShowNavigationToolTip
{
get
{
object obj=ViewState["ShowNavigationToolTip"];
return (obj==null)?true:(bool)obj;
}
set
{
ViewState["ShowNavigationToolTip"]=value;
}
} ///
/// 获取或设置导航按钮工具提示文本的格式。
///
[Browsable(true),
Category("导航按钮"),
DefaultValue("转到第{0}页"),
Description("页导航按钮工具提示文本的格式")]
public string NavigationToolTipTextFormatString
{
get
{
object obj=ViewState["NavigationToolTipTextFormatString"];
return (obj==null)?"转到第{0}页":(string)obj;
}
set
{
string tip=value;
if(tip.Trim().Length<1&&tip.IndexOf("{0}")<0)
tip="{0}";
ViewState["NavigationToolTipTextFormatString"]=tip;
}
} ///
/// 获取或设置一个值,该值指示是否将页索引按钮用中文数字代替。
///
///
/// 将该值设为true并且未使用图片按钮时,页索引按钮中的数值1、2、3等将会被中文字符一、