资源描述:
《asp中如何快速分页!--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Asp中如何快速分页!>>近日一直在研究如何才能写出高小的分页算法,大概整理了一下,思路如下:首先数据库里需要有一个自动编号字段(ID)。然后第一次访问的时候,取出所有记录,定制好每页的记录数PageSize,计算出页数,然后根据页数建立一个一维数组PageId(PageCount),PageId(0)保存记录初试条件,然后对应每个元素保存每页对应的ID边界码(1,ID边界码:如果数据库记录ID记录序列如下1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16假设需要按照ID顺序排序的话,PageSize=5,Pagecount=4
2、,PageId(4)数组PageId的值分别为PageId(0)=1,PageId(1)=5,PageId(2)=10,PageId(3)=15,PageId(4)=16当访问第i页的时候就直接找[PageId(i-1),PageId(i))之间的记录,这样可以保证每次取的记录都只是PageSize条记录。假设需要按照ID倒序排列的话,数组PageId的值分别为PageId(0)=16,PageId(1)=12,PageId(2)=7,PageId(3)=2,PageId(4)=1,当访问第i页的时候就直接查找ID属于[PageId(i-1),PageI
3、d(i)))将数组PageId()保存在Application()中,以便访问,这样,只是第一次访问分页程序的时候便初始化Application()。代码部分如下:(下面称为新程序)<%Time1=Timer()DimConnSetConn=Server.CreateObject("Adodb.Connection")Conn.open"Driver={MicroSoftAccessDriver(*.mdb)};Dbq="Server.MapPath("db.mdb")DimPage,PageCounts,PageId,PageListDimRs,
4、SqlDimIsInit,iIsInit=False''标志为,用来判断Application("PageId")是否初始化PageList=20''设置每页显示20条数据SetRs=Server.CreateObject("Adodb.Recordset")Page=Request.QueryString("Page")''注意页码需要检查类型IfIsEmpty(Application("PageId"))Then''如果Application("PageId")还未初始化,则先进行初始化Response.ove(PageList)NextRs.Mov
5、eLastPageId(PageCounts)=Rs("ID")Application.Lock()Application("PageId")=PageIdApplication.UnLock()EndIfRs.CloseEndIfIdStart=Clng(Application("PageId")(Page-1))IdEnd=Clng(Application("PageId")(Page))Sql="Select*fromtestp;IdStart"andid>"IdEnd""Rs.openSql,Conn,1,1oveNexticroSoftA
6、ccessDriver(*.mdb)};Dbq="Server.MapPath("db.mdb")DimPage,PageCounts,PageListDimRs,SqlPageList=20Page=Request.QueryString("Page")SetRs=Server.CreateObjec12下一页>>>>这篇文章来自..,。t("Adodb.Recordset")Sql="Select*fromtestorderbyiddesc"Rs.OpenSql,Conn,1,1IfPage=""ThenPage=1IfNot(Rs.eofOrRs.
7、Bof)ThenRs.PageSize=PageListPageCounts=Rs.PageCountRs.AbsolutePage=PageEndIfFori=1toPageListIfRs.eofThenExitForResponse.oveNextnextFori=1ToPageCountsResponse.p;i" ")NextTime2=Timer()Response.p;(Time2-Time1)*1000)%>其实,总体的思想就是,建立一个Application("PageId")全局数组,每个元素都保存页面所区记录的ID区间,比如,
8、Application("PageId")(0)保存第一个元素的ID,然后App