功能:分頁程序首先讀取每頁預置的記錄條數,在此是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> <a href=list.asp?PageNo=" & (PageNo-1) & ">上頁</a> "
end if
if TotalPages > 1 and cint(PageNo) <> cint(TotalPages) then
response.write "<a href=list.asp?PageNo=" & (PageNo+1) & ">下頁</a> <a href=list.asp?PageNo=" & TotalPages & ">末頁</a> "
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 " <a href=list.asp?PageNo="&i&">"&i&"</a> "
end if
Next
%>
</TD>
</TR>
</TABLE>
<%
End if
%>