令中国铁道出版社 93分页的技巧 932递归调用 的网页中,递归程序写法如下: <ahre=" index. asp">自己调用自己</a> 但是这样的写法到了ndex2asp时,程序必须配合修改如下 < a href" index2asp">自己调用自己</a> 不同的网页在处理递归时都会有这一问题。但是通过ASP这个 问题是可以解决的,解决方式是通过 Request Server Variables(" PATH INFO")取得网页的路径。它的用法 如下 <a href=<%=request Server VariableS("PATH INFo"%>?Page <%=(Page-1)%>"> 例如现行的网页为/orum/ index. asp,则 Request Server variables(" PATH INFO")的值为/ forum/index. asp,也 就是本网页的路径
21 9.3 分页的技巧(一) • 9.3.2 递归调用 的网页中,递归程序写法如下: <a href="index.asp">自己调用自己</a> 但是这样的写法到了index2.asp时,程序必须配合修改如下: <a href="index2.asp">自己调用自己</a> 不同的网页在处理递归时都会有这一问题。但是通过ASP这个 问题是可以解决的,解决方式是通过 Request.ServerVariables("PATH_INFO")取得网页的路径。它的用法 如下: <a href="<%= Request.ServerVariables("PATH_INFO")%>?Page= <% =(Page - 1) %>"> 例如现行的网页为/forum/index.asp,则 Request.ServerVariables("PATH_INFO")的值为 /forum/index.asp,也 就是本网页的路径
令中国铁道出版社 93分页的技巧 93.3上、下页及指定页数的控制 至于上、下页及指定页数的控制,我们可使用Page变量为参数 利用HIML参数传递方式,并以递归调用方式(自己调用自己)来简 化程序的复杂度。页数控制的规则如下 1.上一页 将Pag页数减1,利用Myse变量(记录本网页的路径达到调用自 己的目的。 取得网页的路径 MySelf= Request Server VariableS("PATH INFO") <a href<%mYsElf%>?Page=<%=(Page-1)% 22
22 9.3 分页的技巧(一) • 9.3.3 上、下页及指定页数的控制 至于上、下页及指定页数的控制,我们可使用Page变量为参数, 利用HTML参数传递方式,并以递归调用方式(自己调用自己)来简 化程序的复杂度。页数控制的规则如下: 1. 上一页 将Page页数减1,利用MySelf变量(记录本网页的路径)达到调用自 己的目的。 <% ‘ 取得网页的路径 MySelf = Request.ServerVariables("PATH_INFO") : %> : <a href="<%=MySelf%>?Page=<% =(Page - 1) %>">
令中国铁道出版社 93分页的技巧 93.3上、下页及指定页数的控制 2.下一页 将Page页数加1,然后调用自己来处理。 取得网页的路径 My Self=request Server VariableS("PATH INFO") a href<%MySelf%>? Page=<%=(Page+ 1)%> 3.指定页数 将Page变量化为URL的参数,调用自己来处理。 <a href+ MySelf+?Page=& page &" 23
23 9.3 分页的技巧(一) • 9.3.3 上、下页及指定页数的控制 2. 下一页 将Page页数加1,然后调用自己来处理。 <% ‘ 取得网页的路径 MySelf = Request.ServerVariables("PATH_INFO") : %> : <a href="<%=MySelf%>?Page=<%=(Page + 1)%> "> 3. 指定页数 将Page变量化为URL的参数,调用自己来处理。 <a href=" + MySelf + "?Page=" & Page & ">
令中国铁道出版社 93分页的技巧 93.3上、下页及指定页数的控制 根据上面的控制原则,我们完成第一版的多页查询程序。ASP 程序代码(ch9-2asp如下 %0 dim Conn, rs Set Conn= Server CreateObject("ADODB Connection Conn Open"Driver=(SQL Server ); Database=northwind; Local: uid Set rs= Server CreateObject("ADODB. Recordset") Page CLng(request(" Page q Select from Customers order by CustomerID Sopen sql, conn, 3, 2 S Page size =10 每页显示记录数 If Page I then Page=1 If page> rs Page Count Then Page= rs Page Count'指定页数>实际页数的处理 If rs Page Count>0 then rs. absolutePage=Page'页数>0的处理 MySelf Request Server Variables("PATH INFO") 利用 PATH INFO取得目前网页的路径 <center> 24
24 9.3 分页的技巧(一) • 9.3.3 上、下页及指定页数的控制 根据上面的控制原则,我们完成第一版的多页查询程序。ASP 程序代码(ch9-2.asp)如下: <% dim Conn, rs Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Driver={SQL Server};Database=northwind; Server=(Local);uid=sa;pwd=" Set rs = Server.CreateObject("ADODB.Recordset") Page = CLng(Request("Page")) sql = "Select * from Customers order by CustomerID" rs.open sql, conn, 3, 2 rs.PageSize = 10 '每页显示记录数 If Page < 1 then Page = 1 If page > rs.PageCount Then Page = rs.PageCount '指定页数 > 实际页数的处理 If rs.PageCount > 0 then rs.AbsolutePage = Page '页数 > 0 的处理 MySelf = Request.ServerVariables("PATH_INFO") ‘利用PATH_INFO取得目前网页的路径 %> <html> <body> <center>
令中国铁道出版社 93分页的技巧 93.3上、下页及指定页数的控制 ch9-2.asp(续) <font face=Arial "size=5>SQL Server<br> Northwind Database MultiPage Control Demo</font> <table border cellpadding=0 cellspacing=l width=96%> Response. Write(<TR BGCOlOr=##ccccd7>) Response. Write("<TD> CustomerID</TD>) Response. Write("<TD>Company Name</TD> Response. Write("<TD>ContactName</TD>) Response. Write("<TD>ContactTitle</TD>) Response. Write("<TD>City<TD>) Response. Write(</TR>") Fori=I to rs Page size If rs eof Then exit for If i mod 2=0 Then Color="#ddddd7 Else Color="#eeeeef End If 25
25 9.3 分页的技巧(一) • 9.3.3 上、下页及指定页数的控制 ch9-2.asp (续) : <p> <font face="Arial" size=5>SQL Server<br> Northwind Database MultiPage Control Demo</font> </p> <table border=0 cellpadding=0 cellspacing=1 width=96%> <% Response.Write("<TR BGCOLOR=#ccccd7>") Response.Write("<TD>CustomerID</TD>") Response.Write("<TD>CompanyName</TD>") Response.Write("<TD>ContactName</TD>") Response.Write("<TD>ContactTitle</TD>") Response.Write("<TD>City</TD>") Response.Write("</TR>") For i = 1 to rs.PageSize If rs.EOF Then Exit For If i mod 2=0 Then Color = "#ddddd7" Else Color = "#eeeeef" End If