明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

使用ASP完成對(duì)表的分頁瀏覽(上)

[摘要]大家都知道,ASP有著強(qiáng)大的數(shù)據(jù)庫操作能力,這與她能方便的調(diào)用ActiveX對(duì)象是密不可分的。下面我給大家介紹一種ASP利用ADO對(duì)象實(shí)現(xiàn)對(duì)數(shù)據(jù)庫記錄分頁顯示的方法。以下代碼均在WIN98+PWS+MSACCESS環(huán)境下通過! ≡谶@里我主要通過ADO對(duì)象集中的Recordset對(duì)象來實(shí)現(xiàn)各種數(shù)據(jù)...
大家都知道,ASP有著強(qiáng)大的數(shù)據(jù)庫操作能力,這與她能方便的調(diào)用ActiveX對(duì)象是密不可分的。下面我給大家介紹一種ASP利用ADO對(duì)象實(shí)現(xiàn)對(duì)數(shù)據(jù)庫記錄分頁顯示的方法。以下代碼均在WIN98+PWS+MSACCESS環(huán)境下通過。

  在這里我主要通過ADO對(duì)象集中的Recordset對(duì)象來實(shí)現(xiàn)各種數(shù)據(jù)庫操作的。先介紹幾個(gè)用于分頁顯示的Recordset屬性。

    PageSize:每頁顯示的記錄數(shù)。

    PageCount:根據(jù)用戶設(shè)好的PageSize和表中的總記錄數(shù),系統(tǒng)自動(dòng)算出總頁數(shù)。

    RecordCount:表中的總記錄數(shù)。

    AbsolutePage:表示當(dāng)前頁碼。如將AbsolutePage屬性設(shè)為3,則當(dāng)前記錄移至第3頁第1條(也就是第31條)。

  看到Recordset有了這幾個(gè)屬性后,相信大家也都覺得做一個(gè)分頁顯示的程序是很簡(jiǎn)單的。下面講一下思路,所有實(shí)現(xiàn)這一功能的代碼都放在display.asp中,按執(zhí)行的順序分別是:打開數(shù)據(jù)庫及表、讀取用戶要求的顯示方式、設(shè)定好PageSize和AbsolutePage、將內(nèi)容輸出到瀏覽器、設(shè)定好導(dǎo)航條。以下是代碼:



<%'---------------------------打開數(shù)據(jù)庫及表
set conn=server.createobject("ADODB.Connection")
filepath=server.mappath("abc.mdb") '-------假設(shè)數(shù)據(jù)庫文件是"abc.mdb"
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & filepath
set rs=server.createobject("ADODB.Recordset")
rs.open "main",conn,3,2 '-------假設(shè)表的名字是"main"
%>
<%'---------------------------讀取用戶要求的顯示方式(通過參數(shù)傳遞)
line=cint(request("line"))
page=cint(request("page"))
%>
<%'---------------------------按用戶要求設(shè)定好顯示方式
rs.PageSize=line
rs.AbsolutePage=page
%>
<%'---------------------------顯示內(nèi)容%>
<table width="100%" border="1">
<tr>
<%for i=0 to rs.Fields.Count-1%>
<td><%=rs.Fields(i).name%></td>
<%next%>
</tr><%'-------以上部分顯示表頭,即字段名%>
<%for i=1 to rs.PageSize%>
<tr>
<%for j=0 to rs.Fields.Count-1%>
<td><%=rs.Fields(j).value%></td>
<%next%>
</tr>
<%rs.movenext%>
<%if rs.eof then exit for%>
<%next%><%'-------以上部分顯示表的內(nèi)容%>
</table>

<%'---------------------------導(dǎo)航條%>
<table width=100% ><tr>
<td>
<%if page<>1 then%>
<a href=display.asp?page=1&line=<%=line%>>第一頁</a>
<%else%>第一頁<%end if%>

</td>
<td>
<%if page>1 then%>
<a href=display.asp?page=<%=page-1%>&line=<%=line%>>前一頁</a>
<%else%>前一頁<%end if%>
</td>
<td>
<%if page<rs.PageCount then%>
<a href=display.asp?page=<%=page+1%>&line=<%=line%>>下一頁
<%else%>下一頁<%end if%>
</td>
<td>
<%if page<>rs.PageCount then%>
<a href=display.asp?page=<%=rs.PageCount%>&line=<%=line%>>最后一頁</a>
<%else%>最后一頁<%end if%>
</td><%'-------以上四項(xiàng)都需要進(jìn)行判斷:如果在第一頁就不提供“第一頁”和“前一頁”的鏈接
'-------如果在最后一頁就不提供“最后一頁”和“后一頁”的鏈接%>
<td>
<form method="POST" action="display.asp?line=<%=line%>">
請(qǐng)輸入頁碼:<input type="text" name="page" size="3" value="<%=page%>">
</form>
</td>
<td>
<form method="POST" action="display.asp?page=<%=page%>">
請(qǐng)?jiān)O(shè)定每頁<input type="text" name="line" size="3" value="<%=line%>">行
</form>
</td><%'-------因?yàn)閮蓚(gè)表單都只有一個(gè)表單域,所以沒有提供發(fā)送按鈕,直接打回車就行了%>
<td>
第<%=page%>頁/總<%=rs.PageCount%>頁
</td>

</tr></table>





  這只是一個(gè)最基本的程序,沒有進(jìn)行優(yōu)化處理,也還有一些bug,下面我們一起來使它更“完美”一些。