ASP記錄集分頁

 

功能:分頁程序首先讀取每頁預置的記錄條數,在此是5條,其它將在下頁中顯示,同時提示當前頁數、總頁數、總記錄數,當顯示的頁數爲第一頁時,“首頁”、“上一頁”鏈接失效,當顯示的頁數爲最後頁時,“下一頁”、“尾頁”鏈接失效。
接下來,以實例的方式告訴大家怎麼一步步的做出這種分頁效果。
首先,數據庫中字段record_info存在於info表中(實例下載中有數據庫),先鏈接數據庫並將一個記錄集打開,以下代碼:
<%
Set conn=Server.CreateObject("Adodb.Connection")
connstr="provider=Microsoft.JET.OLEDB.4.0;Data Source="&Server.MapPath("data.mdb")
conn.open connstr
Set rs=Server.CreateObject("Adodb.Recordset")
sql="Select * from info"
rs.open sql,conn,1,1
%>
這段代碼不詳解,相信初入門的都會,具體的解釋可以看看《手把手教你用ASP做留言本》教程,
接下來這是分頁中比較重要的部分,了了三行而已:
<%
rs.pagesize=5
curpage=Request.QueryString("curpage")
rs.absolutepage=curpage
%>
第二句:
rs.pagesize=5,這個什麼意思呢?它就是在Recordset對象中的一個內置屬性,它的作用是指定每頁的記錄條數,設置爲5時,每5條記錄放在一起成一頁,比如實例中共有21條記錄,那麼,使用rs.pagesize分頁後,這21條記錄將分成5頁進行顯示。
第三句:
這裏主要是用於翻頁的功能,將URL的post參數curpage傳遞給curpage變量,這個curpage將得到瀏覽者想要到達的頁數。(運行一下實例就會明白)
第四句:
rs.absolutepage,這個也是個內置的屬性,,它代表的意思就是將curpage變量的數值指定爲當前頁。
現在開始可以讓記錄循環顯示了:
<%
for i= 1 to rs.pagesize
if rs.eof then
exit for
end if
%>
<%=rs("record_info")%><br>
<%
rs.movenext
next
%>
第二句:
利用for循環在每頁顯示rs.pagesize屬性中指定的記錄數。
第三、四、五句:
這句意思是當最後一頁達不到指定記錄時就退出循環,以免出錯。
第七句:
綁定從數據庫取出的record_info字段,就是叫這字段內的記錄循環顯示的。
第九句:
用rs.movenext方法將rs記錄集往下移一條記錄。
第十句:
for循環語句。
另外可以用<%=curpage%>讀出當前頁次,用<%=rs.pagecount%>讀出總頁數,用& lt;%=rs.recordcount%>讀出總記錄數。例如:“當前第<%=curpage%>頁,共有& lt;%=rs.pagecount%>頁,共有:<%=rs.recordcount%>條記錄”。
在顯示首頁、上頁、下頁、尾頁功能上,採用了if...else...語句,比較好懂。
<%if curpage=1 then%>
首頁
<%else%>
<a href="?curpage=1">首頁</a>
<%end if%>
<%if curpage=1 then%>
上一頁
<%else%>
<a href="?curpage=<%=curpage-1%>">上一頁</a>
<%end if%>
<%if rs.pagecount<curpage+1 then%>
下一頁
<%else%>
<a href="?curpage=<%=curpage+1%>">下一頁</a>
<%end if%>
<%if rs.pagecount<curpage+1 then%>
尾頁
<%else%>
<a href="?curpage=<%=rs.pagecount%>">尾頁</a>
<%end if%>
理解一下:
首頁:
這個使用當前頁是否爲第一頁時判別,如果當前爲第一頁(也就是首頁),那麼顯示首頁兩字,沒有鏈接,否則提供直接跳轉到首頁的鏈接。
上一頁:
當前爲第一頁時,鏈接失效,反過來,鏈接到當前面的上一頁,這裏使用:<%=curpage-1%>,就是用當前的頁數減去1,得到上一頁。
下一頁:
這裏需要使用rs.pagecount這個屬性來比較,假如總頁數小於當前頁數加1的值,那表明這就是第後一頁,鏈接將失效,否則鏈接到下一頁。
尾頁:
和下一頁的功能一樣判定出是最後頁時鏈接失效,否則將當前頁指定爲rs.pagecount(總頁數)。

 

 

 

<!-- #i nclude file="../conn.asp" -->    //(Yoko:路徑按自己的設置好)
<%
dim i,intPage,page,pre,last,filepath
  set rs = server.CreateObject("adodb.recordset")
   sql="select * from user order by user_ID desc"
      rs.PageSize = 20         //(Yoko:這裏設定每頁顯示的記錄數
      rs.CursorLocation = 3
      rs.Open sql,conn,0,2,1   //(Yoko:'這裏執行你查詢SQL並獲得結果記錄集
      pre = true
      last = true
      page = trim(Request.QueryString("page"))
     
      if len(page) = 0 then
                  intpage = 1
                  pre = false
      else
          if cint(page) =< 1 then
               intpage = 1
               pre = false
          else
              if cint(page) >= rs.PageCount then
                  intpage = rs.PageCount
                  last = false
              else
                   intpage = cint(page)
             end if
         end if
      end if
    if not rs.eof then
         rs.AbsolutePage = intpage
    end if
%>
<!--循環開始-->
 <%   
   for i=1 to rs.PageSize
     if rs.EOF or rs.BOF then exit for
  %>
      ..................
     //(Yoko:要循環顯示的內容  )..................
      ...................
   <% 
     rs.movenext
    next
   %>
<!--循環體結束
分頁部分:-->
 <table width="99%" border="1" cellpadding="2" cellspacing="2" borderColorLight=#808080 borderColorDark=#ffffff>
   <tr>
     <%if rs.pagecount > 0 then%>
     <td width="13%" align="left">當前頁<%=intpage%>/<%=rs.PageCount%></td>
     <%else%>
    <td width="41%" align="left">當前頁0/0</td><%end if%>
    <td width="46%" align="right"> <a href="本頁.asp?page=1">首頁</a>|
     <%if pre then%>
     <a href="本頁.asp?page=<%=intpage -1%>">上頁</a>| <%end if%>
     <%if last then%>
      <a href="本頁.asp?page=<%=intpage +1%>">下頁</a> |<%end if%>
      <a href="本頁.asp?page=<%=rs.PageCount%>">尾頁</a>|轉到第
      <select name="sel_page" onchange="javascript:location=this.options[this.selectedIndex].value;">
      <%
       for i = 1 to rs.PageCount
       if i = intpage then%>
       <option value="本頁.asp?page=<%=i%>" selected><%=i%></option>
     <%else%>
       <option value="本頁.asp?page=<%=i%>"><%=i%></option>
        <%
          end if
        next
        %>
     </select>頁</font>
    </td>
    </tr>
   </table>

 

 

下面是CSDN的:


<%

         dim Conn,RS,sqlStr,PageSize,RowCount,TotalPages,PageNo,Position,PageBegin,PageEnd

         set Conn= Server.CreateObject("ADODB.Connection")

         set RS = Server.CreateObject("ADODB.RecordSet")

         Conn.open "provider=sqloledb;data source=127.0.0.1;user id=sa;password=;initial catalog=zjydata"

         sqlStr="select * from Items order by iID"

         RS.open sqlStr,Conn,1,1

         PageSize=10

         If RS.RecordCount=0 then

         %>

                   <TABLE WIDTH=100% BORDER=0 CELLPADDING=1 CELLSPACING=1 style='font-size:9pt'>

                   <TR bgcolor=#003366 height=20px>

                   <TD align=center><font color=#FFFFFF>商品代碼</font></TD>

                   <TD align=center><font color=#FFFFFF>商品名稱</font></TD>

                   <TD align=center><font color=#FFFFFF>型號規格</font></TD>

                   <TD align=center><font color=#FFFFFF>計量單位</font></TD>

                   <TD align=center><font color=#FFFFFF>參考進價</font></TD>

                   <TD align=center><font color=#FFFFFF>參考售價</font></TD>

                   <TD align=center><font color=#FFFFFF>備註</font>

                   </TR>

                   <TR height=20px>

                   <TD align=center>沒有任何商品信息!</TD>

                   <TR>

                   </TABLE>

         <%

         else

                   RS.PageSize = Cint(PageSize)

                   TotalPages=RS.PageCount

                   PageNo=Request.QueryString("PageNo")

                   if PageNo="" or PageNo<1 Then

                            PageNo = 1

                   end if

                   RS.AbsolutePage = PageNo

                  Position=RS.PageSize*PageNo

                   PageBegin=Position-RS.PageSize+1

                   if Position <RS.RecordCount then

                            PageEnd=Position

                   else

                            PageEnd= RS.RecordCount

                   end if

                   %>

                   <TABLE WIDTH=100% BORDER=0 CELLPADDING=1 CELLSPACING=1 style='font-size:9pt'>

                   <TR>

                   <TD width=20%>

                   <%

                            Response.Write "頁:"& PageNo &" / "& TotalPages &" | 記錄:"& PageBegin & " - " & PageEnd & " / " &RS.RecordCount

                   %>

                   </TD>

                   <TD align=right>

                   <%

                            if PageNo > 1 Then

                                     response.write "<a href=list.asp?PageNo=1>首頁</a>&nbsp;<a href=list.asp?PageNo=" & (PageNo-1) & ">上頁</a>&nbsp;"

                            end if

                            if  TotalPages > 1 and  cint(PageNo) <> cint(TotalPages) then

                                     response.write "<a href=list.asp?PageNo=" & (PageNo+1) & ">下頁</a>&nbsp;<a href=list.asp?PageNo=" & TotalPages & ">末頁</a>&nbsp;"

                            end if

                   %>

                   </TD>

                   </TR>

                   <TR bgcolor=#003366 height=20px>

                   <TD align=center width=20%><font color=#FFFFFF>商品代碼</font></TD>

                   <TD align=center width=30%><font color=#FFFFFF>商品名稱</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>型號規格</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>計量單位</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>參考進價</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>參考售價</font></TD>

                   <TD align=center width=18%><font color=#FFFFFF>備註</font></TR>

                   <%

                   RowCount = RS.PageSize

                   dim color1,color2

                   color1="#dddddd"

                   color2="#eeeeee"

                   Do While Not RS.EOF and RowCount > 0

                   Response.Write "<TR height=20px bgcolor="

                   %>

                   <%

                            if RowCount mod 2=0 then:response.write color1 else:response.write color2

                   %>

                   <%

                            Response.Write ">"

                   %>

                   <TD><span><a href=manage.asp?id=<%=rs(0)%>><% =RS("vCode")%></a></span></td>

                   <TD><span><% =RS("vName")%></span></td>

                   <TD><span><% =RS("vSpec")%></span></TD>

                   <TD><span><% =RS("vUnit")%></span></td>

                   <TD><span><% =RS("fInPrice")%></span></td>

                   <TD><span><% =RS("fOutPrice")%></span></TD>

                   <TD><span><% =RS("vDescription")%></span></td>

                   </TR>

                   <%

                   RowCount = RowCount - 1

                   RS.MoveNext

                   Loop

                   Conn.Close

                   set RS = nothing

                   set Conn = nothing

                   %>

                   <TR bgcolor=#003366 height=20px>

                   <TD align=center width=20%><font color=#FFFFFF>商品代碼</font></TD>

                   <TD align=center width=30%><font color=#FFFFFF>商品名稱</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>型號規格</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>計量單位</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>參考進價</font></TD>

                   <TD align=center width=8%><font color=#FFFFFF>參考售價</font></TD>

                   <TD align=center width=18%><font color=#FFFFFF>備註</font>

                   </TR>

                   <TR>

                   <TD>

                   <%

                            For i=1 to TotalPages

                                     if CInt(PageNo) = CInt(i) then

                                               response.write "["&i&"]"

                                     else

                                               response.write "&nbsp<a href=list.asp?PageNo="&i&">"&i&"</a>&nbsp"

                                     end if

                            Next

                   %>

                   </TD>

                   </TR>

                   </TABLE>

                   <%

         End if

%>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章