ASP写的不错的数字分页涵数

网络整理 - 09-06

'============================================================
' ********************数字分页涵数********APJE.2008-10-01
'SQL: 查询语句
'PageSizeN: 每页显示多少新闻记录
'classid: 栏目ID
'PageCountS: 总页数
'thispage: 当前页码
'StarP: 开始页码
'EndP: 结束页码
'ShowPage: 每页显示多少个数字页码
'vvv: 循环体的各个页码
'RecordCountS: 记录集的总记录数
'============================================================

Function PageStr(SQL,PageSizeN,classid,thispage)
dim RecordCountS,PageCountS,ShowPage,StarP,EndP,i,upPage,NextPage,sqlstr,thispage,vvv,BasePage
Set Rs = Server.CreateObject("adodb.Recordset")
Rs.open SQL,conn,1,1
RecordCountS = rs.recordcount
if RecordCountS <> 0 Then

ShowPage = 10
PageCountS = Int(RecordCountS/PageSizeN)
IF (RecordCountS Mod PageSizeN) > 0 Then
PageCountS = PageCountS+1
end if
If thispage > PageCountS Then thispage = PageCountS

vvv = thispage
StarP = ThisPage-(ShowPage/2)+1
IF StarP < 1 Then
StarP = 1
end if
EndP = ThisPage+(ShowPage/2)
IF EndP > PageCountS Then
EndP = PageCountS
end if
'****************循环输出页码
BasePage = (thispage \ showpage) * showpage
if thispage mod showpage = 0 then basepage = ( basepage \ showpage ) * showpage - showpage
For i = 1 to showpage
Dim Showstr
vvv = BasePage + i
if vvv > PageCountS Then exit for
if vvv = thispage then
Showstr = Showstr & "[" & vvv & "]"
else
Showstr = Showstr & "<a href='?type=list&classid=" & classid & "&page=" & vvv & "'>[" & vvv & "]</a>"
End If
Next
'***************开始部分
upPage = ThisPage - 1
If ThisPage < 2 Then
Showstr = "<span>9</span> <span>7</span> " & Showstr
Else
Showstr = "<a href='?type=list&classid="&classid&"&page=1'>9</a> <a href='?type=list&classid="

& classid & "&page=" & upPage & "'>7</a> " & Showstr
End If
'***************结束部分
NextPage = ThisPage + 1
If ThisPage >= PageCountS Then
Showstr = Showstr & " <span>8</span> <span>:</span>"
Else
Showstr = Showstr & " <a href='?type=list&classid=" & classid & "&page=" & NextPage & "'>8</a>

<a href='?type=list&classid=" & classid & "&page=" & PageCountS & "'>:</a>"
End If
rs.Close
Set rs = Nothing
PageStr = Showstr
else
rs.Close
Set rs = Nothing
end if
End Function