asp通用分页类
一、类的属性、方法
这是一个asp通用分页类。你可以用它方便的给记录集分页,当然在网上有许多的分页类和分页函数。本分页主要有conn、sql、url、fieldlist、pagesize、template、init、show、close等属性和方法。
1.conn属性 :用来获取一个已创建的connection对象。
2.sql属性 :根据传入的sql语句,自动创建recordset对象
3.pagesize属性 :设置第页的记录条数
4.fieldlist属性 :如果需要显示库中的数据,一定要设置此属性。它是用来获取需要显示的正确的字段名。
5.url属性 :设置分页条中链接的文件地址。
6.template属性 :设置分页文件的模版。
7.init过程 :分页类初始化数据。
8.show过程 :显示数据。
9.close过程 :分页类结束
全部代码由此下载
二、类的源代码(inc_clspage.asp)
<%
/************************************************
* *
* name : asp pagnation class *
* author : cjj *
* version : v2.8 *
* time : 2004-01-16 *
* comefrom: http://www.blueidea.com/ *
* homepage: none (maybe soon) *
* notice : you can use and modify it freely, *
* but please hold this item. *
* if you modify it that i hope you *
* can send a mail for me. *
* *
************************************************/
#########声明变量#########
定义链接的显示类型
const sw_intshowchinese = 0 汉字,如"上一页、下一页"
const sw_intshowenglish = 1 英文,如"back、next"
const sw_intshowcharacter = 2 特殊字符
定义数据的显示类型
const sw_inthorizontalview = 0 横排
const sw_intverticalview = 1 竖排
线的显示类型
const sw_intshowbigborder = 2 粗线
const sw_intshowsmallborder = 1 细线
const sw_intshownoborder = 0 无线
标题栏线的显示类型
const sw_inttlesmallborder = 1 细线
const sw_inttlenoborder = 0 无线
显示分页信息的位置
const sw_intpageinnone = 0 不显示分页条
const sw_intpageintop = 1 在顶部显示
const sw_intpageinbottom = 2 在底部显示
const sw_intpageinall = 3 在顶、底部显示
显示的页数的数字个数
const sw_intshowpages = 10
swpage class
private sw_blnishavers,sw_strfields,sw_blninconn,sw_intshowpagepos,sw_strshowwidth
#########初始化变量##########
sw_blnishavers = false 设置记录集获取标志为fasle,就是无记录集状态
sw_strshowwidth = "90%" 默认的显示宽度为90%
sw_strfields = ""
sw_blninconn = true 由内部创建connection,如果设为false则由外部创建
sw_intshowpagepos = sw_intpageinall
*****************************************
类型: 类
目的: 给记录集分页
*****************************************
class swpage
声明类私有变量
private sw_objrs,sw_objconn
private sw_strsql,sw_strurl,sw_strerror,sw_strformaction,sw_strheadjs,sw_strfootjs
private sw_intpagesize,sw_inttlebdtype,sw_intshowpagetype,sw_intshowtype
private sw_lngtotalpage,sw_lngtotalrecord,sw_lngpageno
private sw_aryfldname,sw_aryfldnote,sw_aryfldwidth,sw_aryfldalign,sw_aryfldlink
private sw_blninit,sw_blnopenrs,sw_blnconn,sw_blnpagesize,sw_blnfieldlist,sw_blngeturl,sw_blnshowtype,sw_blnshowpagetype,sw_blntemplate
*****************************************
类型: 属性
目的: 根据获取的信息,创建数据库连接
输入: a_strconn:数据类型字符串
返回: 无
*****************************************
public property let conn(a_strconn)
dim strerror
sw_blnconn = false
set sw_objconn = createobject("adodb.connection")
on error resume next
sw_objconn.open a_strconn
if err.number <> 0 then strerror = strerror & "<br>创建connection对象失败"
on error goto 0
if trim(strerror)="" then
sw_blnconn = true
else
sw_strerror = sw_strerror & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#ffffff"">conn属性:</font></td></tr>" & vbcrlf
sw_strerror = sw_strerror & " <tr bgcolor=""#ffffff""><td>" & strerror & "</td></tr>" & vbcrlf
end if
end property
*****************************************
类型: 属性
目的: 设定或显示sql语句。
输入: a_strsql: sql语句。
返回: sql语句。
*****************************************
public property let sql(a_strsql)
dim strerror
sw_blnopenrs = false
sw_strsql = a_strsql
创建recordset对象
set sw_objrs = createobject("adodb.recordset")
on error resume next
sw_objrs.open sw_strsql,sw_objconn,1,1
if err.number <> 0 then strerror = "<br>记录集打开失败"
on error goto 0
if trim(strerror)="" then
sw_blnopenrs = true
else
sw_strerror = sw_strerror & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#ffffff"">sql属性:</font></td></tr>" & vbcrlf
sw_strerror = sw_strerror & " <tr bgcolor=""#ffffff""><td>" & strerror & "</td></tr>" & vbcrlf
end if
end property
*****************************************
类型: 属性
目的: 设置需要显示的数据的字段名
输入: a_strfldname:字段名字符串,多个字段之间以逗号分隔
返回: 无
*****************************************
public property let fieldlist(a_strfldname)
dim strerror
sw_blnfieldlist = false
if trim(a_strfldname) <> "" then
sw_aryfldname = split(lcase(a_strfldname),",")
else
strerror = strerror & "<br>你必须设置需要显示的字段名,否则无法显示数据"
end if
if trim(strerror)="" then
sw_blnfieldlist = true
else
sw_strerror = sw_strerror & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#ffffff"">fieldlist属性:</font></td></tr>" & vbcrlf
sw_strerror = sw_strerror & " <tr bgcolor=""#ffffff""><td>" & strerror & "</td></tr>" & vbcrlf
end if
end property
*****************************************
类型: 属性
目的: 设定或显示每页的记录数。
输入: a_intpagesize: 每页显示的记录数。
返回: 每页显示的记录数。
*****************************************
public property let pagesize(a_intpagesize)
dim strerror
pagesize获取失败标志
sw_blnpagesize = false
if trim(a_intpagesize) = "" or (not(isnumeric(a_intpagesize))) then
strerror = strerror & "<br>非法的pagesize"
else
if (a_intpagesize <= 2147483647 and a_intpagesize>=-2147483648) then
sw_intpagesize = clng(a_intpagesize)
else
strerror = strerror & "<br>pagesize溢出"
end if
if (sw_intpagesize<=0) then
strerror = strerror & "<br>pagesize只能是正整数"
end if
end if
if trim(strerror)="" then
sw_blnpagesize = true
else
sw_strerror = sw_strerror & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#ffffff"">pagesize属性:</font></td></tr>" & vbcrlf
sw_strerror = sw_strerror & " <tr bgcolor=""#ffffff""><td>" & strerror & "</td></tr>" & vbcrlf
end if
end property
*****************************************
类型: 属性
目的: 设定分页文件显示模板信息。
输入: a_strtemplate: 模板描述。
返回: 无。
*****************************************
public property let template(a_strtemplate)
dim arytemplate,i,j,strerror,strtemp,intitem,arytemp,arytemp1
sw_blntemplate = false
arytemplate = split(trim(lcase(a_strtemplate)),"+")
intitem = ubound(arytemplate)
if intitem < 4 then strerror = "<br>此属性是必选项"
if intitem < 4 then
获取文件头
strtemp = trim(arytemplate(0))
if strcomp(left(strtemp,6),"[file=")= 0 then
sw_strheadjs = "<script src=""" & mid(strtemp,7,len(strtemp)-7) & """></script>"
else
sw_strheadjs = mid(strtemp,7,len(strtemp)-7)
end if
获取文件尾
strtemp = trim(arytemplate(3))
if strcomp(left(strtemp,6),"[file=") = 0 then
sw_strfootjs = "<script src=""" & mid(strtemp,7,len(strtemp)-7) & """></script>"
else
sw_strfootjs = mid(strtemp,7,len(strtemp)-7)
end if
获取分页模版
arytemp = split(arytemplate(1),",")
if arytemp(0) <> "" then strtemp = replace(arytemp(0),"[page=","")
if isnumeric(strtemp) then strtemp = cint(strtemp)
if strtemp <> sw_intpageinnone then
if isnumeric(strtemp) then strtemp = cint(strtemp)
sw_intshowpagepos = strtemp
strtemp = arytemp(1)
if strtemp <> "" then strtemp = replace(strtemp,"]","")
if isnumeric(strtemp) then strtemp = cint(strtemp)
sw_intshowpagetype = strtemp
else
sw_intshowpagepos = sw_intpageshowinnone
end if
获取数据显示模版
arytemp = split(arytemplate(2),"|")
for i = 0 to ubound(arytemp)
strtemp = lcase(trim(arytemp(i)))
select case i
case 0 获取并设置显示宽度
if strtemp <> "" then strtemp = replace(strtemp,"[data=","")
sw_strshowwidth = strtemp
case 1 获取数据显示方式
if isnumeric(strtemp) then strtemp = cint(strtemp)
sw_intshowtype = strtemp
case 2
if strtemp <> "" then strtemp = replace(strtemp,"]","")
arytemp1 = split(trim(strtemp),"#")
if ubound(arytemp1) >= 3 then
sw_aryfldnote = split(arytemp1(0),",")
sw_aryfldalign = split(arytemp1(1),",")
sw_aryfldwidth = split(arytemp1(2),",")
sw_aryfldlink = split(arytemp1(3),",")
end if
end select
next
end if
if strerror = "" then
sw_blntemplate = true
else
sw_strerror = sw_strerror & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#ffffff"">template属性:</font></td></tr>" & vbcrlf
sw_strerror = sw_strerror & " <tr bgcolor=""#ffffff""><td>" & strerror & "</td></tr>" & vbcrlf
end if
end property
*****************************************
类型: 属性
目的: 设定或显示url。
输入: a_strurl: 需要分页的文件地址。
返回: 需要分页的文件地址。
*****************************************
public property let url(a_strurl)
dim strerror,objfso
sw_blngeturl = false
if trim(a_strurl)="" then
strerror = "<br>非法的url地址"
else
set objfso = createobject("scripting.filesystemobject")
if objfso.fileexists(server.mappath(a_strurl)) then
sw_strurl = a_strurl
else
strerror = strerror & "<br>你能确定文件 <font color=""#ff0000"">" & a_strurl & "</font> 存在么?"
end if
set objfso = nothing
end if
if strerror = "" then
sw_blngeturl = true
else
sw_strerror = sw_strerror & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#ffffff"">url属性:</font></td></tr>" & vbcrlf
sw_strerror = sw_strerror & " <tr bgcolor=""#ffffff""><td>" & strerror & "</td></tr>" & vbcrlf
end if
end property
*****************************************
类型: 属性
目的: 设置显示标题时单元格的宽度
输入: a_strtlewidth:单元格宽度字符串
返回: 无
*****************************************
public property let tlewidth(a_strwidth)
sw_strtlewidth = a_strwidth
end property
*****************************************
类型: 属性
目的: 设置显示标题时单元格分隔线的类型
输入: a_intbdtype 单元格分隔线的类型
返回: 无
*****************************************
public property let tlebdtype(a_intbdtype)
sw_inttlebdtype = a_intbdtype
end property
*****************************************
类型: 过程
目的: 统计总记录数、计算总页数
输入: 无
返回: 无
*****************************************
sub init()
dim intpostion,strerror,i,objrstemp,lngtotalrecord
if not (sw_blnconn and sw_blnopenrs and sw_blnpagesize and sw_blngeturl) then
call showerrors()
exit sub
end if
if sw_objrs.eof and sw_objrs.bof then
strerror = strerror & "<br>库中无任何记录"
end if
计算总计录数
set objrstemp = sw_objconn.execute("select * from sw_reccount")
lngtotalrecord = clng(objrstemp("sw_reccount").value)
sw_lngtotalrecord = lngtotalrecord
if (sw_lngtotalrecord<=2147483647 and sw_lngtotalrecord>=-2147483648) then
sw_lngtotalrecord = clng(sw_lngtotalrecord)
else
strerror = strerror & "<br>分页初始化时:总记录数溢出"
end if
if sw_lngtotalrecord <=0 then strerror = strerror & "<br>分页初始化时:总记录数小于零"
计算总页数
if sw_lngtotalrecord mod sw_intpagesize = 0 then
sw_lngtotalpage = clng(sw_lngtotalrecord \ sw_intpagesize * -1)*-1
else
sw_lngtotalpage = clng(sw_lngtotalrecord \ sw_intpagesize * -1)*-1 + 1
end if
获取页数
sw_lngpageno = trim(request.querystring("pageno"))
if sw_lngpageno = "" then sw_lngpageno = trim(request.form("pageno"))
if sw_lngpageno = "" then sw_lngpageno = 1
如果没有选择第几页,则默认显示第一页
if sw_lngpageno <> "" and isnumeric(sw_lngpageno) then
if (sw_lngpageno <= 2147483647 and sw_lngpageno>=-2147483648) then
sw_lngpageno = clng(sw_lngpageno)
else
strerror = strerror & "<br>页数溢出,请检查!"
end if
if (sw_lngpageno<=0) then strerror = strerror & "<br>页数只能是正整数!"
else
strerror = strerror & "<br>你确信此页数 <font color=""#ff0000"">" & sw_lngpageno & "</font> 存在?"
end if
if (sw_lngpageno > sw_lngtotalpage and sw_lngtotalpage<>0) then sw_lngpageno = sw_lngtotalpage
sw_objrs.pagesize = sw_intpagesize
sw_objrs.absolutepage = sw_lngpageno
intpostion = instrrev(sw_strurl,"?")
sw_strformaction = sw_strurl
if intpostion > 0 then
sw_strurl = sw_strurl & "&pageno="
else
sw_strurl = sw_strurl & "?pageno="
end if
if trim(sw_strfields) = "" then
for i = 0 to sw_objrs.fields.count-1
sw_strfields = sw_strfields & sw_objrs(i).name & ","
next
end if
sw_strfields = lcase("," & trim(sw_strfields))
if isarray(sw_aryfldname) then
for i = lbound(sw_aryfldname) to ubound(sw_aryfldname)
if instr(sw_strfields,"," & sw_aryfldname(i) & ",") = 0 then strerror = strerror & "<br>字段名 <font color=""#ff0000"">" & sw_aryfldname(i) & "</font> 正确吗?"
next
if (isarray(sw_aryfldnote) and ubound(sw_aryfldname)>ubound(sw_aryfldnote)) then strerror = strerror & "<br>字段相应中文说明项目不能小于字段个数"
if (isarray(sw_aryfldwidth) and ubound(sw_aryfldname)>ubound(sw_aryfldwidth)) then strerror = strerror & "<br>字段相应宽度项目不能小于字段个数"
if (isarray(sw_aryfldalign) and ubound(sw_aryfldname)>ubound(sw_aryfldalign)) then strerror = strerror & "<br>字段数据相应对齐方式项目不能小于字段个数"
if (isarray(sw_aryfldlink) and ubound(sw_aryfldname)>ubound(sw_aryfldlink)) then strerror = strerror & "<br>字段数据相应文件链接项目不能小于字段个数"
end if
if trim(strerror) = "" then
sw_blninit = true
else
sw_strerror = sw_strerror & " <tr bgcolor=""#336699"" height=""28""><td><font color=""#ffffff"">init过程:</font></td></tr>" & vbcrlf
sw_strerror = sw_strerror & " <tr bgcolor=""#ffffff""><td>" & strerror & "</td></tr>" & vbcrlf
end if
response.write(sw_strheadjs & vbcrlf)
end sub
*****************************************
类型: 过程
目的: 显示分页信息
输入: 无
返回: 无
*****************************************
private sub pages()
dim strpages,k,inttemp,inttemp1
if not(sw_blninit) then call showerrors()
if sw_lngtotalpage = 1 then exit sub
response.write("<table align=""center"" class=""css_showpage"" width=""" & sw_strshowwidth & """>" & vbcrlf)
response.write(" <tr>" & vbcrlf)
response.write(" <td>" & vbcrlf)
response.write(" <table width=""100%"">" & vbcrlf)
response.write(" <tr>" & vbcrlf & " <td align=""center"" valign=""middle"" class="".test1"">" & vbcrlf)
if sw_lngtotalpage >= 1 then
select case sw_intshowpagetype
case sw_intshowchinese
if sw_lngpageno <= 1 then
response.write ("<font color=""" & sw_strftcolor & """>首页 前页 <a href=""" & sw_strurl & sw_lngpageno+1 & """>后页</a> <a href=""" & sw_strurl & sw_lngtotalpage & """>末页</a>" & vbcrlf)
else
if sw_lngpageno >= sw_lngtotalpage then
response.write ("<font color=""" & sw_strftcolor & """><a href=""" & sw_strurl & "1"">首页</a> <a href=""" & sw_strurl & sw_lngpageno -1 & """>前页</a> " & "后页 末页" & vbcrlf)
else
response.write ("<font color=""" & sw_strftcolor & """><a href=""" & sw_strurl & "1"">首页</a> <a href=""" & sw_strurl & sw_lngpageno -1 & """>前页</a> " & "<a href=""" & sw_strurl & sw_lngpageno+1 & """>后页</a> <a href=""" & sw_strurl & sw_lngtotalpage & """>末页</a>" & vbcrlf)
end if
end if
response.write (" 页次:<b>" & sw_lngpageno & "</b>/" & sw_lngtotalpage & "页 共<b>" & sw_lngtotalrecord & "</b>条记录 <b>" & sw_intpagesize & "</b>条/页</td>" & vbcrlf)
response.write(" <form name=""gopage"" action=""" & sw_strformaction & """ method=""post"">" & vbcrlf)
response.write(" <td> 第")
response.write(" <input type=""text"" name=""pageno"" size=""3"" maxlength=4 title=""请输入页号,然后回车"">页 " & vbcrlf)
response.write("<input type=""submit"" value=""go""></td></form></tr>" & vbcrlf)
case sw_intshowenglish
if sw_lngpageno <= 1 then
response.write ("<font color=""" & sw_strftcolor & """>first prev <a href=""" & sw_strurl & sw_lngpageno+1 & """>next</a> <a href=""" & sw_strurl & sw_lngtotalpage & """>last</a>" & vbcrlf)
else
if sw_lngpageno >= sw_lngtotalpage then
response.write ("<font color=""" & sw_strftcolor & """><a href=""" & sw_strurl & "1"">first</a> <a href=""" & sw_strurl & sw_lngpageno -1 & """>prev</a> " & "next last" & vbcrlf)
else
response.write ("<font color=""" & sw_strftcolor & """><a href=""" & sw_strurl & "1"">first</a> <a href=""" & sw_strurl & sw_lngpageno -1 & """>prev</a> " & "<a href=""" & sw_strurl & sw_lngpageno+1 & """>next</a> <a href=""" & sw_strurl & sw_lngtotalpage & """>last</a>" & vbcrlf)
end if
end if
response.write (" page no:<b>" & sw_lngpageno & "</b>/" & sw_lngtotalpage & " total records:<b>" & sw_lngtotalrecord & "</b> pagesize:<b>" & sw_intpagesize & "</b></td>" & vbcrlf)
response.write(" <form name=""gopage"" action=""" & sw_strformaction & """ method=""post"">" & vbcrlf)
response.write(" <td> ")
response.write(" <input type=""text"" name=""pageno"" size=""3"" maxlength=4 title=""please input pageno then enter""> " & vbcrlf)
response.write("<input type=""submit"" value=""go""></td></form></tr>" & vbcrlf)
case sw_intshowcharacter
strpages = ""
inttemp = (sw_lngpageno \ sw_intshowpages) * sw_intshowpages
if sw_lngpageno mod sw_intshowpages = 0 then inttemp = inttemp – 10
for k = 1 to sw_intshowpages
inttemp1 = inttemp + k
if inttemp1 > sw_lngtotalpage then exit for
if sw_lngpageno = inttemp1 then
if len(trim(cstr(inttemp1)))<2 then
strpages = strpages & " 0" & cstr(inttemp1)
else
strpages = strpages & " " & cstr(inttemp1)
end if
else
strpages = strpages & " <a href=""" & sw_strurl & cstr(inttemp1) & """>"
if len(trim(cstr(inttemp1)))<2 then
strpages = strpages & "0" & cstr(inttemp1)
else
strpages = strpages & cstr(inttemp1)
end if
strpages = strpages & "</a>"
end if
next
if sw_lngpageno <= 1 then
response.write ("<font face=""webdings"">9 7</font>" & strpages & " <a href=""" & sw_strurl & sw_lngpageno+1 & """><font face=""webdings"">8</font></a> <a href=""" & sw_strurl & sw_lngtotalpage & """><font face=""webdings"">:</font></a>" & vbcrlf)
else
if sw_lngpageno >= sw_lngtotalpage then
response.write ("<a href=""" & sw_strurl & "1""><font face=""webdings"">9</font></a> <a href=""" & sw_strurl & sw_lngpageno -1 & """><font face=""webdings"">7</font></a>" & strpages & " <font face=""webdings"">8 :</font>" & vbcrlf)
else
response.write ("<a href=""" & sw_strurl & "1""><font face=""webdings"">9</font></a> <a href=""" & sw_strurl & sw_lngpageno -1 & """><font face=""webdings"">7</font></a> " & strpages & " <a href=""" & sw_strurl & sw_lngpageno+1 & """><font face=""webdings"">8</font></a> <a href=""" & sw_strurl & sw_lngtotalpage & """><font face=""webdings"">:</font></a>" & vbcrlf)
end if
end if
response.write ("</td>" & vbcrlf)
response.write(" <form name=""gopage"" action=""" & sw_strformaction & """ method=""post"">" & vbcrlf)
response.write(" <td> ")
response.write(" <input type=""text"" name=""pageno"" size=""3"" maxlength=10 title=""please input pageno then enter""> " & vbcrlf)
response.write("<input type=""submit"" value=""go""></td></form></tr>" & vbcrlf)
case sw_intshowimage
case else
response.write("<br>对不起,你设置的显示方式swpage不支持。")
response.end
end select
end if
response.write(" </table>" & vbcrlf)
response.write(" </td>" & vbcrlf)
response.write(" </tr>" & vbcrlf)
response.write("</table>" & vbcrlf)
end sub
*****************************************
类型: 过程
目的: 显示分页数据
输入: 无
返回: 无
*****************************************
sub show()
dim i,j
if not(sw_blninit) then call showerror()
j = 0
if sw_objrs.eof and sw_objrs.bof then
response.write("库中无任何记录<br>")
response.end
else
if sw_intshowpagepos = sw_intpageinall or sw_intshowpagepos = sw_intpageintop then call pages()
空行
response.write("<table><tr><td height=""5""></td></tr></table>" & vbcrlf)
select case sw_intshowtype
case sw_inthorizontalview 横排
do while (not sw_objrs.eof and j<sw_intpagesize)
response.write(" <table class=""css_showdata_tb"" width=""" & sw_strshowwidth & """ align=""center"">" & vbcrlf)
for i = lbound(sw_aryfldname) to ubound(sw_aryfldname)
response.write(" <tr class=""css_showdata_title_h"" height=""28"">" & vbcrlf)
response.write(" <td class=""css_showdata_v"" align=""center"" width=""" & sw_strtlewidth & """>" & vbcrlf & "")
if (isarray(sw_aryfldnote)) then
response.write(sw_aryfldnote(i) & vbcrlf)
else
response.write(sw_aryfldname(i) & vbcrlf)
end if
response.write(" </td>" & vbcrlf & " <td class=""css_showdata_td"" ")
if (isarray(sw_aryfldwidth)) then response.write(" width=""" & sw_aryfldwidth(i) & """")
if (isarray(sw_aryfldalign)) then response.write(" align=""" & sw_aryfldalign(i) & """")
response.write(">" & vbcrlf)
if (isarray(sw_aryfldlink) and (trim(sw_aryfldlink(i))<>"")) then
response.write("<a href=""" & sw_aryfldlink(i) & """ target=""_blank"">" & sw_objrs(sw_aryfldname(i)) & "</a></td>" & vbcrlf)
else
response.write(sw_objrs(sw_aryfldname(i)) & "</td>" & vbcrlf)
end if
response.write(" </tr>" & vbcrlf)
next
response.write(" </table>" & vbcrlf)
空行
response.write("<table><tr><td height=""5""></td></tr></table>" & vbcrlf)
sw_objrs.movenext
j = j + 1
loop
case sw_intverticalview 竖排
if sw_inttlebdtype = sw_inttlenoborder then
response.write(" <table class=""css_showdata_tb"" align=""center"" width=""" & sw_strshowwidth & """>" & vbcrlf)
response.write(" <tr class=""css_title""><td colspan=""" & cstr(ubound(sw_aryfldname)+1) & """>" & vbcrlf)
response.write(" <table border=""0"" width=""100%""><tr>")
for i = lbound(sw_aryfldname) to ubound(sw_aryfldname)
response.write(" <td align=""center""")
if (isarray(sw_aryfldwidth)) then response.write(" width=""" & sw_aryfldwidth(i) & """>")
if (isarray(sw_aryfldnote)) then
response.write(sw_aryfldnote(i) & vbcrlf)
else
response.write(sw_aryfldname(i) & vbcrlf)
end if
response.write(" </td>" & vbcrlf)
next
response.write(" </tr></table></td></tr>" & vbcrlf)
else
response.write(" <table class=""css_showdata_tb"" width=""" & sw_strshowwidth & """ align=""center"">" & vbcrlf)
response.write(" <tr class=""css_title"" height=""28"">" & vbcrlf)
for i = lbound(sw_aryfldname) to ubound(sw_aryfldname)
response.write(" <td class=""css_showdata_td"" align=""center""")
if (isarray(sw_aryfldwidth)) then response.write(" width=""" & sw_aryfldwidth(i) & """>")
if (isarray(sw_aryfldnote)) then
response.write(sw_aryfldnote(i))
else
response.write(sw_aryfldname(i))
end if
response.write(" </td>" & vbcrlf)
next
response.write(" </tr>" & vbcrlf)
end if
do while (not sw_objrs.eof and j<sw_intpagesize)
response.write(" <tr class=""css_showdata_tr"" height=""28"">" & vbcrlf)
for i = lbound(sw_aryfldname) to ubound(sw_aryfldname)
response.write( "<td class=""css_showdata_td""")
if (isarray(sw_aryfldalign)) then response.write(" align=""" & sw_aryfldalign(i) & """ width=""" & sw_aryfldwidth(i) & """>")
if (isarray(sw_aryfldlink) and trim(sw_aryfldlink(i)<>"")) then
response.write(" <a href=""" & sw_aryfldlink(i) & """ target=""_blnak"">" & sw_objrs(sw_aryfldname(i)) & "</a></td>")
else
response.write(sw_objrs(sw_aryfldname(i)) & " </td>" & vbcrlf)
end if
next
response.write(" </tr>" & vbcrlf)
sw_objrs.movenext
j = j + 1
loop
response.write(" </table>" & vbcrlf)
response.write("<table><tr><td height=""5""></td></tr></table>" & vbcrlf)
case else
response.write("<br>你还没设置数据的显示方式?或者你的设置的显示方式swpage不支持!<br>")
response.end
end select
if sw_intshowpagepos = sw_intpageinall or sw_intshowpagepos = sw_intpageinbottom then call pages()
response.write( sw_strfootjs & vbcrlf)
end if
end sub
*****************************************
类型: 过程
目的: 显示分页类中出现的错误信息
输入: 无
返回: 无
*****************************************
private sub showerrors()
if sw_strerror <> "" then
sw_strerror = "<table bgcolor=""#0000"" cellspacing=""1"" cellpadding=""0"" width=""90%"" align=""center"">" & vbcrlf & " <tr bgcolor=""#ff9900"" height=""30""><td align=""center"" valign=""middle""><b>swpage分页类错误信息<b></td></tr>" & vbcrlf & sw_strerror & "</table>" & vbcrlf
response.write(sw_strerror)
response.end
end if
end sub
*****************************************
类型: 过程
目的: 释放资源
输入: 无
返回: 无
*****************************************
sub close()
set sw_objrs = nothing
set sw_objconn = nothing
end sub
end class
%>
三、类的应用代码
<%option explicit
dim strstarttime,intusetime,clspage,strshowtemp
strstarttime = timer()
%>
<!–#include file="inc_clspages.asp"–>
<%
分页显示的位置:sw_intpageinall,sw_intpageintop,sw_intpageinbottom
页数的显示模式:sw_intshowchinese,sw_intshowenglish,sw_intshowcharacter,sw_intshowimage
页面显示模板设置 <文件头> + <页数设置:分页显示模式,页数显示的位置> + <数据显示> + <页数显示> + <文件尾>如果某项不需要,只要设置成<>就行了,不过<文件头>和<文件尾是必须的>
设置分页文件头,可以直接跟html代码({code=<html>….</html>})
strshowtemp = "[file=head.js] + "
设置分页条显示信息
strshowtemp = strshowtemp & "[page=" & sw_intpageinall & "," & sw_intshowcharacter & "] + "
########设置数据模版信息
strshowtemp = strshowtemp & "[data="
设置显示的宽度
strshowtemp = strshowtemp & "90%|"
数据显示方式,竖排、横排
strshowtemp = strshowtemp & sw_intverticalview & "|"
需要显示的字段的相应的中文说明
strshowtemp = strshowtemp & "编号,用户名,生日#"
需要显示的字段的相应的对齐方式
strshowtemp = strshowtemp & "left,center,right#"
需要显示的字段的相应的宽度
strshowtemp = strshowtemp & "30%,30%,30%#"
需要显示的字段的相应的链接文件名
strshowtemp = strshowtemp & "list.asp,,,"
strshowtemp = strshowtemp & "] + "
#########数据模版结束
#########设置文件尾
strshowtemp = strshowtemp & "[file=foot.js]"
set clspage = new swpage
clspage.conn = "driver={microsoft access driver (*.mdb)};dbq=" & server.mappath("../db/datatest.mdb")
clspage.sql = "select * from datatest"
clspage.pagesize = 10
clspage.url = "pages.asp"
clspage.fieldlist = "id,field1,field2"
clspage.template = strshowtemp 显示模版
clspage.init()
clspage.show
clspage.close
set clspage = nothing
intusetime = formatnumber((timer()-strstarttime)*1000,3)
response.write("<br><br><center>共用时 <font color=""#ff0000"">" & intusetime & "</font> 毫秒</center>")
%>
四、注意事项
你可以随意修改、使用此代码,但是当你修改后,希望能给我一份拷贝(cjj8110@xxx163.com为了防止垃圾邮件,发邮件时请把163前面的"xxx"删除)。如在使用中发现有bug请通知我或帮我改正,需要注意的是本类需要用到fso,主要是url属性中用到它。现在不使有recordset对象的recordcount属性来获取总记录数了,而是将总记录数存在另外的一个表中,所以在通用方面降低了很多,有兴趣的朋友也可以用application对象来记录总记录数。不管哪种方法,都使添加记录、删除记录的操作麻烦起来了,但分页中最耗时的地方就是用recordcount来取总记录数了,当然如果你的库记录数不多的话,是无所谓的。但如果有几十或几百万条记录时,可以很明显的感觉到用不用recordcount的区别了。
