資源描述:
《asp中如何快速分頁(yè)!--》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、Asp中如何快速分頁(yè)!>>近日一直在研究如何才能寫出高小的分頁(yè)算法,大概整理了一下,思路如下:首先數(shù)據(jù)庫(kù)里需要有一個(gè)自動(dòng)編號(hào)字段(ID)。然后第一次訪問(wèn)的時(shí)候,取出所有記錄,定制好每頁(yè)的記錄數(shù)PageSize,計(jì)算出頁(yè)數(shù),然后根據(jù)頁(yè)數(shù)建立一個(gè)一維數(shù)組PageId(PageCount),PageId(0)保存記錄初試條件,然后對(duì)應(yīng)每個(gè)元素保存每頁(yè)對(duì)應(yīng)的ID邊界碼(1,ID邊界碼:如果數(shù)據(jù)庫(kù)記錄ID記錄序列如下1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16假設(shè)需要按照ID順序排序的話,PageSize=5,Pagecount=4
2、,PageId(4)數(shù)組PageId的值分別為PageId(0)=1,PageId(1)=5,PageId(2)=10,PageId(3)=15,PageId(4)=16當(dāng)訪問(wèn)第i頁(yè)的時(shí)候就直接找[PageId(i-1),PageId(i))之間的記錄,這樣可以保證每次取的記錄都只是PageSize條記錄。假設(shè)需要按照ID倒序排列的話,數(shù)組PageId的值分別為PageId(0)=16,PageId(1)=12,PageId(2)=7,PageId(3)=2,PageId(4)=1,當(dāng)訪問(wèn)第i頁(yè)的時(shí)候就直接查找ID屬于[PageId(i-1),PageI
3、d(i)))將數(shù)組PageId()保存在Application()中,以便訪問(wèn),這樣,只是第一次訪問(wèn)分頁(yè)程序的時(shí)候便初始化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''標(biāo)志為,用來(lái)判斷Application("PageId")是否初始化PageList=20''設(shè)置每頁(yè)顯示20條數(shù)據(jù)SetRs=Server.CreateObject("Adodb.Recordset")Page=Request.QueryString("Page")''注意頁(yè)碼需要檢查類型IfIsEmpty(Application("PageId"))Then''如果Application("PageId")還未初始化,則先進(jìn)行初始化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下一頁(yè)>>>>這篇文章來(lái)自..,。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)%>其實(shí),總體的思想就是,建立一個(gè)Application("PageId")全局?jǐn)?shù)組,每個(gè)元素都保存頁(yè)面所區(qū)記錄的ID區(qū)間,比如,
8、Application("PageId")(0)保存第一個(gè)元素的ID,然后App