效果图:http://www.ukei.cn/ob1.html
代码这里下载/Files/genson/AjaxPager.rar
l准备工作:
- jQuery,到http://www.jquery.com下载。
- 分页的存储过程 准备工作:http://www.cnblogs.com/genson/archive/2006/01/17/318882.html这里可以找到。
- 分页用户控件,首先我们先写一个基类继承 UserControl,主要是分页的属性和一个静态方法,代码如下
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Collections;
usingSystem.Text;
usingSystem.Collections.Specialized;
/**////<summary>
///SummarydescriptionforUserControlBase
///</summary>publicabstractclassDataUserControlBase:UserControl
{
publicintrecordCount=0;
publicabstractvoidBindData();
protectedoverridevoidOnLoad(EventArgse)
{
stringp=Request.QueryString["p"];
if(!string.IsNullOrEmpty(p))
{
PageIndex=Convert.ToInt32(p);
}
else
{
PageIndex=1;
}
BindData();
if(!Page.ClientScript.IsClientScriptIncludeRegistered(typeof(Page),"PagerCheck"))
{
Page.ClientScript.RegisterClientScriptInclude(typeof(Page),"PagerCheck",ResolveClientUrl("~/js/PagerCheck.js"));
}
base.OnLoad(e);
}
privateobject[]urlVariantParameters;
/**////<summary>
///页面传递多个参数的时候使用,这个要跟UrlParamers替换的数组一致,当参数只有一个的时候,可以省略
///</summary>
publicobject[]UrlVariantParameters
{
get{returnurlVariantParameters;}
set{urlVariantParameters=value;}
}
privatestringstrWhere=string.Empty;
publicstringStrWhere
{
get
{
returnstrWhere;
}
set
{
strWhere=value;
}
}
privateboolorderType=true;
publicboolOrderType
{
get{returnorderType;}
set{orderType=value;}
}
privatestringfldName="DateCreated";
publicstringFldName
{
get{returnfldName;}
set{fldName=value;}
}
privateint_recordCount;
publicvirtualintRecordCount
{
get
{
return_recordCount;
}
set
{
_recordCount=value;
}
}
privateintpageIndex=1;
publicvirtualintPageIndex
{
get
{
returnpageIndex;
}
set
{
pageIndex=value;
}
}
publicvirtualintPageCount
{
get
{
returnRecordCount%PageSize==0?RecordCount/PageSize:RecordCount/PageSize+1;
}
}
privatestringurlParamers;
/**////<summary>
///指通过页面传递参数的地址:如UrlParamers="~/ob{0}.html";
///</summary>
publicvirtualstringUrlParamers
{
get
{
returnurlParamers;
}
set
{
urlParamers=value;
}
}
privateintpageSize=10;
publicvirtualintPageSize
{
get
{
returnpageSize;
}
set
{
pageSize=value;
}
}
privateboolajaxEnabled=true;
/**////<summary>
///是否启用Ajax效果分页,默认启用
///</summary>
publicvirtualboolAjaxEnabled
{
get
{
returnajaxEnabled;
}
set
{
ajaxEnabled=value;
}
}
publicstaticvoidSetProperty(DataUserControlBasepager,DataUserControlBaseb)
{
b.RecordCount=b.recordCount;
pager.RecordCount=b.RecordCount;
pager.PageSize=b.PageSize;
pager.PageIndex=b.PageIndex;
pager.UrlParamers=b.UrlParamers;
pager.AjaxEnabled=b.AjaxEnabled;
pager.UrlVariantParameters=b.UrlVariantParameters;
}
}
- 然后我们再新增一个ascx文件,叫Pager.ascx吧!继承上面定义的DataUserControlBase,代码如下。
<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="Pager.ascx.cs"Inherits="UC_Pager"%>
<!--这里开始输出页码条-->
<DIVclass="pagebar">
<asp:PlaceHolderrunat=serverID=ph/>
</DIV>
<!--这里结束页码的输出-->
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingObj.DAL;
publicpartialclassUC_Pager:DataUserControlBase
{
protectedvoidPage_Load(objectsender,EventArgse)
{
GeneratePagerLink(ph);
}
publicvirtualvoidGeneratePagerLink(Controlcontainer)
{
intmax=PagerHelper.MaxPageIndex(PageIndex);
intmin=PagerHelper.MinPageIndex(PageIndex);
//if(string.IsNullOrEmpty(VirtualCurrentPageUrl))
//{
//thrownewException("VirtualCurrentPageUrlisnull");
//}
if(PageCount<=max)max=PageCount;
if(PageCount==1)return;
if(min!=1)//Prev
{
HyperLinkhyprev=newHyperLink();
hyprev.Text="<<";
if(UrlVariantParameters==null)
{
hyprev.NavigateUrl=string.Format(UrlParamers,min-1);
}
else
{
UrlVariantParameters[0]=min-1;
hyprev.NavigateUrl=string.Format(UrlParamers,UrlVariantParameters);
}
ConvertAnchor(hyprev,min-1);
container.Controls.Add(hyprev);
}
for(inti=min;i<=max;i++)
{
HyperLinkhy=newHyperLink();
if(UrlVariantParameters==null)
{
hy.NavigateUrl=string.Format(UrlParamers,i);
}
else
{
UrlVariantParameters[0]=i;
hy.NavigateUrl=string.Format(UrlParamers,UrlVariantParameters);
}
hy.Text=i.ToString();
if(PageIndex==i)
hy.NavigateUrl=string.Empty;
else
ConvertAnchor(hy,i);
container.Controls.Add(hy);
}
if(PageCount>max)//Next
{
HyperLinkhynext=newHyperLink();
hynext.Text=">>";
if(UrlVariantParameters==null)
{
hynext.NavigateUrl=string.Format(UrlParamers,max+1);
}
else
{
UrlVariantParameters[0]=max+1;
hynext.NavigateUrl=string.Format(UrlParamers,UrlVariantParameters);
}
ConvertAnchor(hynext,max+1);
container.Controls.Add(hynext);
}
}
privatevoidConvertAnchor(HyperLinkhy,intp)
{
if(AjaxEnabled)
{
hy.Attributes.Add("onclick",hy.NavigateUrl);
hy.NavigateUrl="#"+hy.NavigateUrl;
}
}
publicvirtualControlContainer
{
get
{
returnph;
}
}
publicoverridevoidBindData()
{
}
protectedoverridevoidOnPreRender(EventArgse)
{
if(RecordCount==0)
{
//Container.Controls.Add(newLiteralControl("<pstyle=text-align:center;>没有数据</p>"));
}
base.OnPreRender(e);
}
}
当然,少不了分页帮助类PagerHelper,代码如下:这里使用了MicroSoft.Application.Data那个SqlHelper.cs文件
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Data.SqlClient;
usingMicrosoft.ApplicationBlocks.Data;
namespaceObj.DAL
{
/**////<summary>
///SummarydescriptionforPageHelper
///</summary>
/**//**/
/**////<summary>
///分页类PagerHelper的摘要说明。
///</summary>
publicclassPagerHelper
{
privatestringconnectionString;
/**////<summary>
///得到记录集的构造函数
///</summary>
///<paramname="tblname"></param>
///<paramname="sortname"></param>
///<paramname="docount"></param>
///<paramname="connectionString"></param>
publicPagerHelper(stringtblname,stringsortname,booldocount,stringconnectionString)
{
this.tblName=tblname;
this.fldName=sortname;
this.connectionString=connectionString;
this.docount=docount;
}
/**////<summary>
///所有参数都有
///</summary>
///<paramname="tblname"></param>
///<paramname="docount"></param>
///<paramname="strGetFields"></param>
///<paramname="fldName"></param>
///<paramname="pagesize"></param>
///<paramname="pageindex"></param>
///<paramname="ordertype"></param>
///<paramname="strwhere"></param>
///<paramname="connectionString"></param>
publicPagerHelper(stringtblname,booldocount,
stringstrGetFields,stringfldName,intpagesize,
intpageindex,boolordertype,stringstrwhere,stringconnectionString
)
{
this.tblName=tblname;
this.docount=docount;
this.strGetFields=strGetFields;
this.fldName=fldName;
this.pagesize=pagesize;
this.pageindex=pageindex;
this.ordertype=ordertype;
this.strwhere=strwhere;
this.connectionString=connectionString;
}
/**//**/
/**////<summary>
///得到记录集的构造函数
///</summary>
///<paramname="tblname"></param>
///<paramname="strwhere"></param>
///<paramname="connectionString"></param>
publicPagerHelper(stringtblname,stringstrwhere,stringconnectionString)
{
this.tblName=tblname;
this.strwhere=strwhere;
this.docount=true;
this.connectionString=connectionString;
}
privatestringtblName;
publicstringTblName
{
get{returntblName;}
set{tblName=value;}
}
privatestringstrGetFields="*";
publicstringStrGetFields
{
get{returnstrGetFields;}
set{strGetFields=value;}
}
privatestringfldName=string.Empty;
publicstringFldName
{
get{returnfldName;}
set{fldName=value;}
}
privateintpagesize=10;
publicintPageSize
{
get{returnpagesize;}
set{pagesize=value;}
}
privateintpageindex=1;
publicintPageIndex
{
get{returnpageindex;}
set{pageindex=value;}
}
privatebooldocount=false;
publicboolDoCount
{
get{returndocount;}
set{docount=value;}
}
privateboolordertype=false;
publicboolOrderType
{
get{returnordertype;}
set{ordertype=value;}
}
privatestringstrwhere=string.Empty;
publicstringStrWhere
{
get{returnstrwhere;}
set{strwhere=value;}
}
publicIDataReaderGetDataReader()
{
if(this.docount)
{
thrownewArgumentException("要返回记录集,DoCount属性一定为false");
}
//System.Web.HttpContext.Current.Response.Write(pageindex);
returnSqlHelper.ExecuteReader(connectionString,CommandType.StoredProcedure,"Pagination",
newSqlParameter("@tblName",this.tblName),
newSqlParameter("@strGetFields",this.strGetFields),
newSqlParameter("@fldName",this.fldName),
newSqlParameter("@PageSize",this.pagesize),
newSqlParameter("@PageIndex",this.pageindex),
newSqlParameter("@doCount",this.docount),
newSqlParameter("@OrderType",this.ordertype),
newSqlParameter("@strWhere",this.strwhere)
);
}
publicDataSetGetDataSet()
{
if(this.docount)
{
thrownewArgumentException("要返回记录集,DoCount属性一定为false");
}
returnSqlHelper.ExecuteDataset(connectionString,CommandType.StoredProcedure,"Pagination",
newSqlParameter("@tblName",this.tblName),
newSqlParameter("@strGetFields",this.strGetFields),
newSqlParameter("@fldName",this.fldName),
newSqlParameter("@PageSize",this.pagesize),
newSqlParameter("@PageIndex",this.pageindex),
newSqlParameter("@doCount",this.docount),
newSqlParameter("@OrderType",this.ordertype),
newSqlParameter("@strWhere",this.strwhere)
);
}
publicintGetCount()
{
if(!this.docount)
{
thrownewArgumentException("要返回总数统计,DoCount属性一定为true");
}
return(int)SqlHelper.ExecuteScalar(connectionString,CommandType.StoredProcedure,"Pagination",
newSqlParameter("@tblName",this.tblName),
newSqlParameter("@strGetFields",this.strGetFields),
newSqlParameter("@fldName",this.fldName),
newSqlParameter("@PageSize",this.pagesize),
newSqlParameter("@PageIndex",this.pageindex),
newSqlParameter("@doCount",this.docount),
newSqlParameter("@OrderType",this.ordertype),
newSqlParameter("@strWhere",this.strwhere)
);
}
publicstaticintMaxPageIndex(intpageindex)
{
if(pageindex<10)
return10;
stringnumstr=pageindex.ToString();
numstr=numstr.Substring(0,numstr.Length-1);
returnConvert.ToInt32(numstr+"0")+10;
}
publicstaticintMinPageIndex(intpageindex)
{
if(pageindex<10)
return1;
stringnumstr=pageindex.ToString();
numstr=numstr.Substring(0,numstr.Length-1);
returnConvert.ToInt32(numstr+"0");
}
}
}
这一切准备好之后,我们就可以对数据进行分页程序开发了。
这篇文章也许写得不是很好,同样代码也有很多可以修改的地方,代码我已经测试过,兼容ie和ff2.0。如果有问题,欢迎回帖,也可以
发信息给我。
分享到:
相关推荐
使用Asp.NET完成分页功能,分页用户控件功能,使用Ajax完成的特效,水印图片,存储过程等,用于初学ASP.NET用户学习与参考。大家共同提高。谢谢下载。
JQuery autocomplete ajax分页,对源码稍微修改了下
NULL 博文链接:https://it-jiayuan.iteye.com/blog/1771807
AspNetPager分页控件绑定服务器端数据源 使用JQuery和ajax实现无刷新分页代码
基于jquery制作采用Twitter分页样式的ajax分页控件源码.zip
Ajax无刷新分页(jQuery+Json) 做了一个用jQuery来实现的用户控件,VS2008+Access 只用来玩玩.所以就用Access数据库了 jQuery+ashx+JSON 用ashx来接收请求,数据格式为JSON 实现了批量(选择)操作,编辑接口(反回...
这段时间在做公司项目的时候需要用到ajax进行分页(点击页码也是无刷新的显示上一页或下一页的内容,不是一般的选择跳转),但是在网上找了一下,大部分分页插件都是直接刷新跳转的,感觉和我的需求差距比较大,就...
适合基于ajax请求的分页内容的分页控件 本控件基于jquery1.7.1编写,适用于:新闻分页、产品分页等等。 目前版本1.1
smartpaginator分页控件和jsp技术及ajax技术的结合
ajax+jquery分页控件(asp.net),很好用的哟...........................
但是学了Jquery之后,了解了 Jquery.ajax ,Jquery.get 等方法,从而学会了使用 webservice 和.ashx 文件,来与服务器交互。 这次的Jquery分页 是与 .ashx文件配合的。 建立三个.ashx,分别为PreviewHandler.ashx,...
Jquery所开发的一个轻量级Jquery分页控件;效果类似于易迅网的分页,通过传入总条数,动态创建分页数字,还可显示分页的信息{当前第几页,共几页,每页几条},等等,css样式可自定义。
Ajax无刷新分页(jQuery+Json) 做了一个用jQuery来实现的用户控件,VS2008+Access jQuery+ashx+JSON 用ashx来接收请求,数据格式为JSON 实现了批量(选择)操作,编辑接口(反回两个值给用户进行自定义操作) 删除,...
使用ssh2框架搭建的基于Maven的小程序,实现了使用jQuery的datagrid控件实现的基于Ajax的datagrid分页功能。
使用方法:我把分页做成了一个小控件。引用控件(首先在web.config里注册该控件 ~/Usercontrol/Pager.ascx" tagName="mypage"/> </pages></system.web>然后页面中).....ajax端数据库替换为自己的数据库。...
基于jquery的分页控件,适合纯ajax开发。 Pager plugin v1.1
能有动态自定义列,页面真正的无刷新,自定义显示的条数,列数!
1.无刷新分页控件,以Northwind数据库为示例, 2.支持多种分页样式选择,也可以自己修改源代码自定义 3.可以单击任意字段排序 4.MsSql数据库封装访问类,可以修改代码应用于其他数据库 5.继承自IHttpHandler接口...