一个数据表中的记录数据往往很多,如果都显示在一个页面中,这会给阅读和浏览造成一定的麻烦。若能分页显示表中的记录数据,则是一个较好的解决办法。可利用记录集对象提供的3个相关属性PageSize、PageCount、AbsolutePage,来分页显示表中的记录数据。
【例7.6】分页显示student表中的记录,每页3条记录,并提供上一页、下一页、首页、尾页的导航链接,并提供一文本框,输入页号按回车键后显示指定页面。
文件命名为7-6.asp的代码如下:
〈%CPageName=Request.servervariables(″SCRIPTNAME″)%〉
〈HTML〉
〈HEAD〉
〈TITLE〉记录集的分页显示〈/TITLE〉
〈SCRIPT LANGUAGE=″VBScript″〉
Sub gopage ()
If Window.Event .keycode=13 Then ′若按回车键
pno=document .frm Page .pageno.value ′获得文本框中输入的页号
Window.Location.href=″〈%=CPageName%〉?pageno= ″ & pno
End If
End Sub
〈/SCRIPT〉
〈/HEAD〉
〈BODY bgcolor=″#FFFFFF″〉
〈DIV align=″center″〉〈h2〉记录集的分页显示〈/H2〉〈/DIV〉
〈%
Dim Conn,str Sgl,Rs
Set Conn=Server .CreateObject (″ADODB.Connection″)
Set Rs=Server .CreateObject (″ADODB.Record Set″)
Conn .ConnectionString=″DRIVER={Microsoft Access Driver (*.mdb)};DBQ=″&_
Server .MapPath (″school .mdb″)
Conn.open
strSql=″select*from student″
Rs .Open strSgl,Conn,1,1,&H0001
dim Cpage_no ′当前页号
Rs .PageSize=3 ′设置每页显示的记录数
If Request .Querystring (″pageno″)=″″Then ′查询所要显示的页号
Cpage_no=l ′若未指定, 则显示第 1 页
Else
Cpage_no=Cint (Request .Querystring (″pageno″)) ′设置所要显示的页号
End If
Rs .AbsolutePage=Cpage_no
′下面构造导航栏的内容
%〉
〈DIV align=″center″〉
〈TABLE border=0 width=″l00%″〉
〈TR align=″center″〉
〈TD〉第〈%=Cpage_no%〉/〈%=Rs.PageCount%〉页〈/TD〉
〈TD〉共〈%=Rs.RecordCount%〉条记录〈/TD〉
〈%If Cpage_no〉1 Then ′若当前页号大于1,则上一页有效 %〉
〈TD〉〈A href=″〈%=CPageName%〉?pageno=〈%=Cpage_no-1%〉″〉上一页〈/A〉〈/TD〉
〈%Else %〉
〈TD〉上一页〈/TD〉
〈%End if %〉
〈%If Cpage_no〈Rs.PageCount Then %〉
〈TD〉〈A href=″〈%=CPageName%〉?pageno=〈%=Cpage_no+1%〉″〉下一页〈/A〉〈/TD〉
〈%Else %〉
〈TD〉下一页〈/TD〉
〈%End If %〉
〈%If Cpage_no〉l Then %〉
〈TD〉〈A href=″〈%=CPageName%〉?pageno=l″〉首页〈/A〉〈/TD〉
〈%Else %〉
〈TD〉首页〈/TD〉(www.xing528.com)
〈%End If %〉
〈%If Cpage_no〈Rs.PageCount Then %〉
〈TD〉〈A href=″〈%=CPageName%〉?pageno=〈%=Rs.PageCount%〉″〉尾页〈/A〉〈/TD〉
〈%Else %〉
〈TD〉尾页〈/TD〉
〈%End If %〉
〈TD〉〈FORM Name=″frmPage″〉
第〈INPUT type=″text″Name=″pageno″onKeyPress=″gopage()″size=4〉页
〈/FORM〉
〈/TD〉
〈/TABLE〉
〈/DIV〉
〈BR〉
〈TABLE border=l align=center width=″100%″〉
〈TR bgcolor=#E0E0E0align=center〉
〈%
For i=0To rs.Fields.count-1 ′输出表头字段名
Response.write ″〈td〉″+Rs.Fields(i).Name+″〈/TD〉″
Next
%〉
〈/TR〉
〈%
Line No=1
Do While NOT Rs.EOF AND LineNo〈=Rs.PageSize 输出当前页的内容
Response.write ″〈TR〉″
For i=0To Rs.Fields.count-1
fdvalue=Rs(i)
If isnull(fdvalue)Then
Response.write ″〈TD〉 ;〈/TD〉″
Else
If RS(i).Name=″email″Then
If instr(Rs(i),″@″)〈〉0Then ′若为Email地址
Response.write ″〈td〉〈A href=mailto:″&trim(Rs(i))&″〉″&trim(Rs(i))&″〈/A〉〈/td〉″
Else
Response.write ″〈TD〉″&Rs(i)&″〈/TD〉″
End If
Else
Response.write ″〈TD〉″&Rs(i)&″〈/TD〉″
End If
End If
Next
Rs.MoveNext
Response .write ″〈/TR〉″
LineNo=LineNo+1
Loop
RS .close
set Rs=Nothing
Conn.close
Set Conn=Nothing
%〉
〈/TABLE〉
〈/BODY〉
〈/HTML〉
程序运行结果如图7- 14所示 。
图7-14 例7.6运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。