我们继续接上期 在页面里通过调用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("
") for i=1 to mypage.pagesize '这里就可以自定义显示方式了 if not rs.eof then response.write rs(0) & "
" 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的处理,可以自动的获取当前面的文件名,和所有带的参数,实现了页面转换页不丢失参数。 三、后记 通过这个分页类,解决了每次分页时需要重复写的分页部分代码,方便了编程,也使的提高了主要代码的可读性。也希望能给大家在编程过程中带来一点方便,由于本人水平有限,程序和文章中难免有错,还望大家批评指正。 全部代码下载 http://www.blueidea.com/articleimg/2004/06/1989/xd_page.zip
") for i=1 to mypage.pagesize '这里就可以自定义显示方式了 if not rs.eof then response.write rs(0) & "
" 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的处理,可以自动的获取当前面的文件名,和所有带的参数,实现了页面转换页不丢失参数。 三、后记 通过这个分页类,解决了每次分页时需要重复写的分页部分代码,方便了编程,也使的提高了主要代码的可读性。也希望能给大家在编程过程中带来一点方便,由于本人水平有限,程序和文章中难免有错,还望大家批评指正。 全部代码下载 http://www.blueidea.com/articleimg/2004/06/1989/xd_page.zip