日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创建一个ASP通用分页类(完整版)

發布時間:2025/1/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创建一个ASP通用分页类(完整版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從開始學習到使用ASP到現在也寫了不少程序了,最令人頭痛的是寫數據分頁,每次都是由于幾個變量名或幾個參數的不同,因而需要每次都寫哪一段冗長而又繁雜的分頁代碼,代碼長了使得程序的可讀性變差,容易出差,調試半天也找不出錯在哪里,所以慢慢的我開始使用一些網上的提供的分頁函數或分頁類。的確省事不少,但是通常的函數和類的做法都是就數據顯示部分也封裝了起來,每次為了達到自己需要的顯求效果要去改動函數或者類的本身,所以使用起來也不是怎么方便,自己寫的分頁改起來已經夠復雜了,更不要說別人的了。

所以趁昨天有空自己寫了一個分頁的類,自我感覺良好(不要用雞蛋砸我),在這里和大家分享一下自己的經驗(談不上經驗,感想吧)。在這里我也不想說分頁的原理了,反正大家都懂,要我往深入的談我也不會。呵呵。

一、創建分頁類的目標
在寫之前,我曾想過,我究竟要寫怎么樣一個類,回想起以前寫分頁過程的時候,最煩的莫過于每次都要寫哪一段復雜的分頁代碼,最大的煩惱每次都是僅僅幾個變量名的不同。所以第一個要實現的就是要把這個封裝起來,第二個就是要把分頁的導航條也封裝起來,第三個,不習慣哪些把數據顯示部分也封裝起來的方法,這不是方便編程,對與哪些對顯示效果每次都不同的用戶來說,比自己寫分頁還要麻煩。所以我的目地就是對RecordSet進行一些簡單的封裝。

二、創建過程
所以我寫的第一個屬性,就是返一個經過處理的RecordSe

Public Property Get GetRs()
? Set XD_Rs=Server.createobject("adodb.recordset")
? XD_Rs.PageSize=PageSize
? XD_Rs.Open XD_SQL,XD_Conn,1,1
? If not(XD_Rs.eof and XD_RS.BOF) Then
? If int_curpage>XD_RS.PageCount Then
int_curpage=XD_RS.PageCount
? End If
? XD_Rs.AbsolutePage=int_curpage
? End If
? Set GetRs=XD_RS
End Property

   這個屬性的作用是更據指定RecordSet 的當前面,并到指針指向當前頁的第一條記錄,這個應該就是整個類的完成分頁的核心了,當然,其中的一些參數是靠其它的屬性來獲取,所以這里順便介紹一個這個類所要的基本參數

=============================================
'GetConn 得到數據庫連接
'
'=============================================
Public Property Let GetConn(obj_Conn)
? Set XD_Conn=obj_Conn
End Property

'=============================================
'GetSQL 得到查詢語句
'
'==============================================
Public Property Let GetSQL(str_sql)
? XD_SQL=str_sql
End Property

'===============================================
'PageSize 屬性
'設置每一頁的分頁大小
'===============================================
Public Property Let PageSize(int_PageSize)
? If IsNumeric(Int_Pagesize) Then
? XD_PageSize=CLng(int_PageSize)
? Else
? str_error=str_error & "PageSize的參數不正確"
? ShowError()
? End If
End Property

Public Property Get PageSize
? If XD_PageSize="" or (not(IsNumeric(XD_PageSize))) Then
? PageSize=10
? Else
? PageSize=XD_PageSize
? End If
End Property

以上幾個是在使用類的過程必需要指定的參數,曾經我在寫屬性的時候對每個傳入的參數加上IsObject(obj_conn)等判斷,為的是類的健壯,但是后來想來想去,這個對與ASP來說沒有必要,不加還能加快點速度,至于為什么這樣,我想各位在使用過程中也會發現,加還不如不加。這也是我經過了思想斗爭以后才去掉了,只保留了一些必要的驗證。
一個參數就是當前頁的獲得,在程序中我用int_curpage來標識,這個的話放在類的創建過程中獲得在好也沒有了

? '========================
? '設定一些參數的黙認值
? '========================
? XD_PageSize=10 '設定分頁的默認值為10
? '========================
? '獲取當前面的值
? '========================
? If request("page")="" Then
? int_curpage=1
? ElseIf not(IsNumeric(request("page"))) Then
? int_curpage=1
? ElseIf CInt(Trim(request("page")))<1 Then
? int_curpage=1
? Else
? Int_curpage=CInt(Trim(request("page")))
? End If?
End Sub

到這里這個類分的功能基本已經實現了,只要在調用這個類的頁面的URL后面加上page=n,它就會顯示第n頁的內容了,所以接下去要做的就是創建一個數據導航條了,我把它設計為類似以面的形式
9 3[1] [2] [3] [4] [5] [6] [7] [8] 4 :頁次:1/8頁 共51條記錄 7條/每頁


在頁面里通過調用ShowPage()的方法顯示出來,ShowPage可以在GetRS以后的任意位置調用,也可以調用多次

Public Sub ShowPage()
Dim str_tmp
int_totalRecord=XD_RS.RecordCount
If int_totalRecord<=0 Then
? str_error=str_error & "總記錄數為零,請輸入數據"
? Call ShowError()
End If
If int_totalRecord="" Then
? int_TotalPage=1
Else
? If int_totalRecord mod PageSize =0 Then
int_TotalPage = CLng(int_TotalRecord / XD_PageSize * -1)*-1
? Else
int_TotalPage = CLng(int_TotalRecord / XD_PageSize * -1)*-1+1
? End If
End If

If Int_curpage>int_Totalpage Then
? int_curpage=int_TotalPage
End If

'=====================================================
'顯示分頁信息,各個模塊根據自己要求更改顯求位置
'=====================================================
response.write "
str_tmp=ShowFirstPrv '顯示首頁、前一頁
response.write str_tmp?
str_tmp=showNumBtn '數字導航
response.write str_tmp
str_tmp=ShowNextLast? '下一頁、末頁
response.write str_tmp
str_tmp=ShowPageInfo
response.write str_tmp
response.write ""
end Sub

到這里類的功能才算完整(為了節省版面,我有些方法沒有放上去,再下面附上全部完整代碼)寫一個簡單頁面測試一下

<%?
’把分頁類包含進來
set conn = server.CreateObject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq=" & server.Mappath("pages.mdb")

'#############類調用樣例#################
'創建對象
Set mypage=new xdownpage
'得到數據庫連接
mypage.getconn=conn
'sql語句
mypage.getsql="select * from [test] order by id asc"
'設置每一頁的記錄條數據為5條
mypage.pagesize=5
'返回Recordset
set rs=mypage.getrs()
'顯示分頁信息,這個方法可以,在set rs=mypage.getrs()以后,可在任意位置調用,可以調用多次
mypage.showpage()

'顯示數據
Response.Write("<br/>")
for i=1 to mypage.pagesize
'這里就可以自定義顯示方式了
??? if not rs.eof then
??????? response.write rs(0) & "<br/>"
??????? rs.movenext
??? else
???????? exit for
??? end if
next
%>

?

效果還不錯,該有的全有了。

分頁過程中,還有一個比軟麻煩的問題是,在帶多個參數的URL中,如保證在頁面轉向的時候不掉失其它參數。我靠一個GetURL的過程來實現,并在生成導航時調用。

Private Function GetURL()
? Dim strurl,str_url,i,j,search_str,result_url
? search_str="page="
? strurl=Request.ServerVariables("URL")
? Strurl=split(strurl,"/")
? i=UBound(strurl,1)
? str_url=strurl(i)'得到當前頁文件名
? str_params=Request.ServerVariables("QUERY_STRING")
? If str_params="" Then
? result_url=str_url & "?page="
? Else
? If InstrRev(str_params,search_str)=0 Then
result_url=str_url & "?" & str_params &"&page="
? Else
j=InstrRev(str_params,search_str)-2
If j=-1 Then
? result_url=str_url & "?page="
Else
? str_params=Left(str_params,j)
? result_url=str_url & "?" & str_params &"&page="
End If
? End If
? End If
? GetURL=result_url
End Function

通過GetURL的處理,可以自動的獲取當前面的文件名,和所有帶的參數,實現了頁面轉換頁不丟失參數。
三、后記
通過這個分頁類,解決了每次分頁時需要重復寫的分頁部分代碼,方便了編程,也使的提高了主要代碼的可讀性。也希望能給大家在編程過程中帶來一點方便,由于本人水平有限,程序和文章中難免有錯,還望大家批評指正。

全部代碼下載

?

?

附全部代碼:

<%
'===================================================================
'XDOWNPAGE?? ASP版本
'版本?? 1.00
'Code by? zykj2000
'Email:?? zykj_2000@163.net
'BBS:?? http://bbs.513soft.net
'本程序可以免費使用、修改,希望我的程序能為您的工作帶來方便
'但請保留以上請息
'
'程序特點
'本程序主要是對數據分頁的部分進行了封裝,而數據顯示部份完全由用戶自定義,
'支持URL多個參數
'
'使用說明
'程序參數說明
'PapgeSize????? 定義分頁每一頁的記錄數
'GetRS?????? 返回經過分頁的Recordset此屬性只讀
'GetConn????? 得到數據庫連接
'GetSQL?????? 得到查詢語句
'程序方法說明
'ShowPage????? 顯示分頁導航條,唯一的公用方法
'
'===================================================================

Const Btn_First="<font face=""webdings"">9</font>"? '定義第一頁按鈕顯示樣式
Const Btn_Prev="<font face=""webdings"">3</font>"? '定義前一頁按鈕顯示樣式
Const Btn_Next="<font face=""webdings"">4</font>"? '定義下一頁按鈕顯示樣式
Const Btn_Last="<font face=""webdings"">:</font>"? '定義最后一頁按鈕顯示樣式
Const XD_Align="Center"???? '定義分頁信息對齊方式
Const XD_Width="100%"???? '定義分頁信息框大小

Class Xdownpage
Private XD_PageCount,XD_Conn,XD_Rs,XD_SQL,XD_PageSize,Str_errors,int_curpage,str_URL,int_totalPage,int_totalRecord,XD_sURL


'=================================================================
'PageSize 屬性
'設置每一頁的分頁大小
'=================================================================
Public Property Let PageSize(int_PageSize)
?If IsNumeric(Int_Pagesize) Then
? XD_PageSize=CLng(int_PageSize)
?Else
? str_error=str_error & "PageSize的參數不正確"
? ShowError()
?End If
End Property
Public Property Get PageSize
?If XD_PageSize="" or (not(IsNumeric(XD_PageSize))) Then
? PageSize=10????
?Else
? PageSize=XD_PageSize
?End If
End Property

'=================================================================
'GetRS 屬性
'返回分頁后的記錄集
'=================================================================
Public Property Get GetRs()
?Set XD_Rs=Server.createobject("adodb.recordset")
?XD_Rs.PageSize=PageSize
?XD_Rs.Open XD_SQL,XD_Conn,1,1
?If not(XD_Rs.eof and XD_RS.BOF) Then
? If int_curpage>XD_RS.PageCount Then
?? int_curpage=XD_RS.PageCount
? End If
? XD_Rs.AbsolutePage=int_curpage
?End If
?Set GetRs=XD_RS
End Property

'================================================================
'GetConn? 得到數據庫連接
'
'================================================================
Public Property Let GetConn(obj_Conn)
?Set XD_Conn=obj_Conn
End Property

'================================================================
'GetSQL?? 得到查詢語句
'
'================================================================
Public Property Let GetSQL(str_sql)
?XD_SQL=str_sql
End Property

?

'==================================================================
'Class_Initialize 類的初始化
'初始化當前頁的值
'
'==================================================================
Private Sub Class_Initialize
?'========================
?'設定一些參數的黙認值
?'========================
?XD_PageSize=10? '設定分頁的默認值為10
?'========================
?'獲取當前面的值
?'========================
?If request("page")="" Then
? int_curpage=1
?ElseIf not(IsNumeric(request("page"))) Then
? int_curpage=1
?ElseIf CInt(Trim(request("page")))<1 Then
? int_curpage=1
?Else
? Int_curpage=CInt(Trim(request("page")))
?End If
?
End Sub

'====================================================================
'ShowPage? 創建分頁導航條
'有首頁、前一頁、下一頁、末頁、還有數字導航
'
'====================================================================
Public Sub ShowPage()
?Dim str_tmp
?XD_sURL = GetUrl()
?int_totalRecord=XD_RS.RecordCount
?If int_totalRecord<=0 Then
? str_error=str_error & "總記錄數為零,請輸入數據"
? Call ShowError()
?End If
?If int_totalRecord="" then
???? int_TotalPage=1
?Else
? If int_totalRecord mod PageSize =0 Then
?? int_TotalPage = CLng(int_TotalRecord / XD_PageSize * -1)*-1
? Else
?? int_TotalPage = CLng(int_TotalRecord / XD_PageSize * -1)*-1+1
? End If
?End If
?
?If Int_curpage>int_Totalpage Then
? int_curpage=int_TotalPage
?End If
?
?'==================================================================
?'顯示分頁信息,各個模塊根據自己要求更改顯求位置
?'==================================================================
?response.write ""
?str_tmp=ShowFirstPrv
?response.write str_tmp
?str_tmp=showNumBtn
?response.write str_tmp
?str_tmp=ShowNextLast
?response.write str_tmp
?str_tmp=ShowPageInfo
?response.write str_tmp
?
?response.write ""
End Sub

'====================================================================
'ShowFirstPrv? 顯示首頁、前一頁
'
'
'====================================================================
Private Function ShowFirstPrv()
?Dim Str_tmp,int_prvpage
?If int_curpage=1 Then
? str_tmp=Btn_First&" "&Btn_Prev
?Else
? int_prvpage=int_curpage-1
? str_tmp="<a href="""&XD_sURL & "1" & """>" & Btn_First&"</a> <a href=""" & XD_sURL & CStr(int_prvpage) & """>" & Btn_Prev&"</a>"
?End If
?ShowFirstPrv=str_tmp
End Function

'====================================================================
'ShowNextLast? 下一頁、末頁
'
'
'====================================================================
Private Function ShowNextLast()
?Dim str_tmp,int_Nextpage
?If Int_curpage>=int_totalpage Then
? str_tmp=Btn_Next & " " & Btn_Last
?Else
? Int_NextPage=int_curpage+1
? str_tmp="<a href=""" & XD_sURL & CStr(int_nextpage) & """>" & Btn_Next&"</a> <a href="""& XD_sURL & CStr(int_totalpage) & """>" &? Btn_Last&"</a>"
?End If
?ShowNextLast=str_tmp
End Function


'====================================================================
'ShowNumBtn? 數字導航
'
'
'====================================================================
Private Function showNumBtn()
?Dim i,str_tmp
?For i=1 to int_totalpage
? str_tmp=str_tmp & "[<a href=""" & XD_sURL & CStr(i) & """>"&i&"</a>] "
?Next
?showNumBtn=str_tmp
End Function


'====================================================================
'ShowPageInfo? 分頁信息
'更據要求自行修改
'
'====================================================================
Private Function ShowPageInfo()
?Dim str_tmp
?str_tmp="頁次:"&int_curpage&"/"&int_totalpage&"頁 共"&int_totalrecord&"條記錄 "&XD_PageSize&"條/每頁"
?ShowPageInfo=str_tmp
End Function
'==================================================================
'GetURL? 得到當前的URL
'更據URL參數不同,獲取不同的結果
'
'==================================================================
Private Function GetURL()
?Dim strurl,str_url,i,j,search_str,result_url
?search_str="page="
?
?strurl=Request.ServerVariables("URL")
?Strurl=split(strurl,"/")
?i=UBound(strurl,1)
?str_url=strurl(i)'得到當前頁文件名
?
?str_params=Trim(Request.ServerVariables("QUERY_STRING"))
?If str_params="" Then
? result_url=str_url & "?page="
?Else
? If InstrRev(str_params,search_str)=0 Then
?? result_url=str_url & "?" & str_params &"&page="
? Else
?? j=InstrRev(str_params,search_str)-2
?? If j=-1 Then
??? result_url=str_url & "?page="
?? Else
??? str_params=Left(str_params,j)
??? result_url=str_url & "?" & str_params &"&page="
?? End If
? End If
?End If
?GetURL=result_url
End Function

'====================================================================
' 設置 Terminate 事件。
'
'====================================================================
Private Sub Class_Terminate?
?XD_RS.close
?Set XD_RS=nothing
End Sub
'====================================================================
'ShowError? 錯誤提示
'
'
'====================================================================
Private Sub ShowError()
?If str_Error <> "" Then
? Response.Write("" & str_Error & "")
? Response.End
?End If
End Sub
End class

?

set conn = server.CreateObject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq=" & server.Mappath("pages.mdb")

'#############類調用樣例#################
'創建對象
Set mypage=new xdownpage
'得到數據庫連接
mypage.getconn=conn
'sql語句
mypage.getsql="select * from [test] order by id asc"
'設置每一頁的記錄條數據為5條
mypage.pagesize=5
'返回Recordset
set rs=mypage.getrs()
'顯示分頁信息,這個方法可以,在set rs=mypage.getrs()以后,可在任意位置調用,可以調用多次
mypage.showpage()

'顯示數據
Response.Write("<br/>")
for i=1 to mypage.pagesize
'這里就可以自定義顯示方式了
??? if not rs.eof then
??????? response.write rs(0) & "<br/>"
??????? rs.movenext
??? else
???????? exit for
??? end if
next
%>

轉載于:https://www.cnblogs.com/MaxIE/archive/2006/03/18/352509.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的创建一个ASP通用分页类(完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 手机看片日韩日韩 | 国产精品久久亚洲 | 国产日 | 亚洲五月综合 | 无码熟妇αⅴ人妻又粗又大 | 久操成人 | 久久久天天 | 欧美一级二级在线观看 | 天堂av观看 | 四川话毛片少妇免费看 | 最新网址av| 五月色婷 | 日韩av无码一区二区三区 | 羞羞草影院 | 97成人在线视频 | 永久免费AV无码网站韩国毛片 | 日韩精品在线观看免费 | 国产女同在线观看 | 女人扒开屁股让男人桶 | 91精品国产综合久久国产大片 | 在线免费看黄av | 西西44rtwww国产精品 | 日本三级韩国三级三级a级按摩 | 国产最新在线视频 | 中文字幕少妇在线三级hd | 精品视频国产 | 怡春院视频 | 国产人人看 | 日日日视频 | 午夜激情福利在线 | 白浆网站| 91色片| 午夜美女福利视频 | 深夜福利免费视频 | 国产精品国产三级国产专区51区 | 国产一级二级三级 | 极品粉嫩小仙女高潮喷水久久 | 国产欧美精品久久久 | 美女脱了内裤喂我喝尿视频 | 亚洲日日骚| 色妞网站 | 亚洲精品中文无码AV在线播放 | 亚洲午夜在线播放 | 欧美黄色短片 | 欧美日韩在线观看免费 | 97超碰免费在线观看 | 久久精品丝袜 | www.日韩 | 亚洲av无码专区国产乱码不卡 | 又粗又猛又爽又黄的视频 | 在线免费91| 在线成人看片 | 精品裸体舞一区二区三区 | 污片在线免费看 | 亚州激情视频 | 日韩精品一区二区电影 | 中国一级片黄色一级片黄 | 一区二区三区视频在线免费观看 | 亚洲va欧美va国产综合久久 | 欧美在线国产 | 久久精品小视频 | 视频一区欧美 | 一区二区三区四区国产精品 | 色小妹av | 在线免费观看高清视频 | 亚日韩av| 四虎色播| 国产对白自拍 | 国产精选在线 | 又黄又刺激的视频 | 欧美大片免费播放器 | 欧美h网站| 中文字幕在线观看精品 | 久伊人网 | 韩日午夜在线资源一区二区 | jizz俄罗斯| 日韩视频精品 | 夫妻性生活黄色大片 | 综合色88| 亚洲精品99久久久久中文字幕 | 国产a久久麻豆入口 | 国产乱了高清露脸对白 | 啪啪福利社| 四虎在线看片 | 天堂av.com| 国产一区观看 | 成长快手短视频在线观看 | 毛片一二三区 | 亚洲综合av一区二区三区 | 无码播放一区二区三区 | 日韩资源站 | 亚洲男人网站 | 欧美刺激性大交 | 东京热无码av一区二区 | 免费一级欧美 | 超碰人人艹 | 久久久久黄色 | 欧美欧美欧美 | 国产黄在线 |