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

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

[摘要]一.關(guān)于參數(shù)傳遞。假如表中有46條記錄,然后我們?cè)诘刂窓谥星萌雋ttp.//localhost/display.asp?line=10&page=2(假設(shè)這是正確的路徑)肯定瀏覽器將給我們顯示第二頁(yè)的十條記錄。但是如果在地址欄中只敲入http.//localhost/display.asp...
一.關(guān)于參數(shù)傳遞。假如表中有46條記錄,然后我們?cè)诘刂窓谥星萌雋ttp.//localhost/display.asp?line=10&page=2(假設(shè)這是正確的路徑)肯定瀏覽器將給我們顯示第二頁(yè)的十條記錄。但是如果在地址欄中只敲入http.//localhost/display.asp,瀏覽器卻給我們一個(gè)出錯(cuò)信息。如何解決呢?我們必須在讀取這些參數(shù)時(shí)加一個(gè)判斷,如果參數(shù)是空的,就賦給它一個(gè)初值,以防出錯(cuò)。將“讀取用戶要求的顯示方式”部分用以下代碼代替:


<%
if request("page")<>"" then
page=cint(request("page"))
else
page=1 '-------如果參數(shù)page為空,就給它賦值1
end if
if request("line")<>"" then
line=cint(request("line"))
else
line=10 '-------如果參數(shù)line為空,就給它賦值10
end if
%>


  二.參數(shù)的合理性問(wèn)題。如果我們?cè)诘刂窓谥星萌雋ttp.//localhost/display.asp?line=20&page=4會(huì)出現(xiàn)什么情況呢?瀏覽器報(bào)錯(cuò)。因?yàn)楸碇兄挥?6條記錄,而我們要它以每頁(yè)顯示二十條,第四頁(yè)的二十條記錄,也就是第六十一條到第八十條記錄。顯然會(huì)出錯(cuò)。同樣情況還會(huì)出現(xiàn)在導(dǎo)航條中,如果當(dāng)前瀏覽器中顯示的是以每頁(yè)十條,第四頁(yè)的內(nèi)容,我們?nèi)ピO(shè)定它以每頁(yè)二十條顯示,同樣也會(huì)出錯(cuò)。解決方法還是一樣的,先判斷一下參數(shù)的合理性,然后再設(shè)置顯示方式。將“按用戶要求設(shè)定好顯示方式”部分用以下代碼代替。

<%
if page>(rs.RecordCount-1)\line+1 then
'-------通過(guò)計(jì)算可知,最大頁(yè)數(shù)=(總記錄數(shù)-1)\每頁(yè)行數(shù)+1
response.write("error!") '-------如果參數(shù)不合實(shí)際,輸出"error!"
response.end '-------終止程序
end if
rs.PageSize=line
rs.AbsolutePage=page

%>


  三.驗(yàn)證表單域。導(dǎo)航條中的兩個(gè)輸入文本框輸入的都必須是整數(shù),否則也會(huì)出錯(cuò)。我們可以利用FrontPage的驗(yàn)證表單域功能開完成,這里就不多說(shuō)了。

  四.優(yōu)化。到目前為止,這個(gè)程序還有一個(gè)缺點(diǎn)。在數(shù)據(jù)庫(kù)的存取過(guò)程中,最花時(shí)間的要數(shù)是數(shù)據(jù)庫(kù)的打開和Recordset對(duì)象的建立,而這個(gè)程序每次執(zhí)行都會(huì)打開數(shù)據(jù)庫(kù)及建立Recordset對(duì)象,極大的降低了效率,一旦訪問(wèn)量增大,這個(gè)程序也就是去了價(jià)值。解決的辦法是:第一次執(zhí)行程序時(shí),打開數(shù)據(jù)庫(kù)及建立Recordset對(duì)象,并將這些存在session中,下次執(zhí)行時(shí)直接將session中的值返回就行了。用以下代碼代替“打開數(shù)據(jù)庫(kù)及表”部分。

<%
if not isobject(session("conn")) then
set conn=server.createobject("ADODB.Connection")
filepath=server.mappath("abc.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & filepath
set rs=server.createobject("ADODB.Recordset")
rs.open "main",conn,3,2
set session("conn")=conn
set session("rs")=rs
else
set conn=session("conn")
set rs=session("rs")
end if
%>  

   至此,一個(gè)比較“完美”的程序完成了。各位大蝦有何高見?歡迎來(lái)信與我探討。webflier@263.net