今天心情有點激動,想把"關(guān)于用DW+ASP實現(xiàn)分頁技術(shù)的參考"分享給用DW+ASP做網(wǎng)頁的朋友們.去掉只有"第一頁,前一頁,下一頁,最后一頁"的小痛苦 此效果最后的顯示是:第N頁[共*頁] <<1 2 3 4 5 6 7 8 9 10 >>。
用DW+ASP做網(wǎng)頁時,在綁定記錄集后,代碼頁里馬上出現(xiàn)以下代碼:
<% Dim Recordset1 Dim Recordset1_numRows
Set Recordset1 = Server.CreateObject("ADODB.Recordset") Recordset1.ActiveConnection = MM_數(shù)據(jù)庫名_STRING Recordset1.Source = "SELECT * FROM 表名" Recordset1.CursorType = 0 Recordset1.CursorLocation = 2 Recordset1.LockType = 1 Recordset1.Open()
Recordset1_numRows = 0 %>
現(xiàn)在我們要來對代碼做點修改,請在上面代碼中修改為如下的代碼:
<% Dim I Dim RPP Dim PageNo I=1 RPP=50 PageNo=CInt(Request("PageNo"))
’上面即是新插入的,
Dim Recordset1 Dim Recordset1_numRows Set Recordset1 = Server.CreateObject("ADODB.Recordset") Recordset1.ActiveConnection = MM_數(shù)據(jù)庫名_STRING Recordset1.Source = "SELECT * FROM 數(shù)據(jù)庫名" Recordset1.CursorType = 1 ’將上面代碼的0改為1. Recordset1.CursorLocation = 2 Recordset1.LockType = 1 Recordset1.Open()
Recordset1_numRows = 0 ’再在此行的下一行開始加入如下代碼:
Recordset1.PageSize=RPP If PageNo<=0 Then PageNo=1 If PageNo>Recordset1.PageCount Then PageNo=Recordset1.PageCount Recordset1.AbsolutePage=PageNo Sub ShowPageInfo(tPageCount,cPageNo) Response.Write "第"&cPageNo&"頁[共"&tPageCount&"頁]" End Sub Sub ShowPageNavi(tPageCount,cPageNo) If cPageNo<1 Then cPageNo=1 If tPageCount<1 Then tPageCount=1 If cPageNo>tPageCount Then cPageNo=tPageCount Dim NaviLength NaviLength=10 'NaviLength:顯示的數(shù)字鏈接個數(shù) Dim I,StartPage,EndPage StartPage=(cPageNo\NaviLength)*NaviLength+1 If (cPageNo Mod NaviLength)=0 Then StartPage=StartPage-NaviLength EndPage=StartPage+NaviLength-1 If EndPage>tPageCount Then EndPage=tPageCount If StartPage>1 Then Response.Write "<a class=""pageNavi"" href=""?PageNo=" & (cPageNo-NaviLength) & """><<</a> " Else Response.Write "<font color=""#CCCCCC""><<</font> " End If For I=StartPage To EndPage If I=cPageNo Then Response.Write "<b>"&I&"</b>" Else Response.Write "<a class=""pageNavi"" href=""?PageNo=" & I & """>" & I & "</a>" End If If I<>tPageCount Then Response.Write " " Next If EndPage<tPageCount Then Response.Write " <a class=""pageNavi"" href=""?PageNo=" & (cPageNo+NaviLength) & """>>></a>" Else Response.Write " <font color=""#CCCCCC"">>></font> " End If End Sub %>
上面代碼中:RPP:指定每頁顯示的記錄條數(shù)。即每頁顯示幾條數(shù)據(jù)。 NaviLength:顯示的數(shù)字鏈接個數(shù),即10就為1 2 3 ...10的連接個數(shù)。 若要顯示所有連接的頁(個)數(shù),你可以設(shè)置為:NaviLength=tPageCount。
這時代碼已經(jīng)差不多了,但還要在顯示的地方(如表格)中加點代碼才行吧,(要不然怎么顯示,呵~~~)如我們插入一個2行3列的表格。
1.將光標(biāo)移在第一行第一列中,切換到代碼中加入:<%=(PageNo-1)*RPP+I%> 這個代碼是顯示序號用的。
2.右邊2個單元格(當(dāng)然你自己可以根據(jù)需要分更多的列)就是為你要顯示的記錄了。請分別從綁定的記錄集中選中你要顯示的字段拖放在相應(yīng)的單元格中,(也可以選中后再點右下角的“插入”按鈕)。這里我們就先拖2個進(jìn)來如“編號”和“公司名稱”。分別到1行第2個單元格和1行第3個單元格中。 3.這個是個關(guān)鍵的,請將光標(biāo)移到第一行任意單元格中,再來點選窗口底下的<tr>,這時你看看代碼,<tr>....</tr>就被選中了。這時請在<tr>....</tr>的前面插入如下代碼:
<% If Recordset1.EOF OR Recordset1.BOF Then Else For I=1 To RPP %>
再在<tr>....</tr>之后插入如下代碼:
<% Recordset1.MoveNext If Recordset1.EOF OR Recordset1.BOF Then Exit For Next End If %>
4.這是就完成表格的第一行的工作。下來也是關(guān)鍵,即分頁的連接。光標(biāo)在第2行第一個單元格中時在代碼窗口插入: <% showPageInfo Recordset1.PageCount,PageNo %> 的代碼。右邊的2個單元格將其合并,在代碼中插入: <% showPageNavi Recordset1.PageCount,PageNo %> 的代碼。
5.大功告成!這時感快預(yù)覽一下吧。。。。 表格的全部代碼如下:
<table width="710" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#333333"> <% If Recordset1.EOF OR Recordset1.BOF Then Else For I=1 To RPP %> <tr bgcolor="#FFFFFF"> <td width="30" align="center"><%=(PageNo-1)*RPP+I%></td> <td><%=(Recordset1.Fields.Item("編號").Value)%></td> <td><%=(Recordset1.Fields.Item("公司名稱").Value)%></td> </tr> <% Recordset1.MoveNext If Recordset1.EOF OR Recordset1.BOF Then Exit For Next End If %> <tr bgcolor="#FFFFFF"> <td colspan="3"><table width="100%" border="0" cellspacing="0" cellpadding="2"> <tr bgcolor="#006699" class="w12"> <td width="121" align="center"><% showPageInfo Recordset1.PageCount,PageNo %> </td> <td width="573" align="center"> <% showPageNavi Recordset1.PageCount,PageNo %> </td> </tr> </table></td> </tr> </table> 這時你去點應(yīng)用程序中的“服務(wù)器行為”中的記錄集,在代碼中就顯示為一下代碼,也是我的原代碼: <% Dim I Dim RPP'RPP:指定每頁顯示的記錄條數(shù), Dim PageNo I=1 RPP=50 PageNo=CInt(Request("PageNo")) Dim Recordset1 Dim Recordset1_numRows Set Recordset1 = Server.CreateObject("ADODB.Recordset") Recordset1.ActiveConnection = MM_數(shù)據(jù)庫名_STRING Recordset1.Source = "SELECT * FROM 表名 ORDER BY 編號 ASC" Recordset1.CursorType = 1 Recordset1.CursorLocation = 2 Recordset1.LockType = 1 Recordset1.Open()
Recordset1_numRows = 0 Recordset1.PageSize=RPP If PageNo<=0 Then PageNo=1 If PageNo>Recordset1.PageCount Then PageNo=Recordset1.PageCount Recordset1.AbsolutePage=PageNo
Sub ShowPageInfo(tPageCount,cPageNo) Response.Write "第"&cPageNo&"頁[共"&tPageCount&"頁]" End Sub
Sub ShowPageNavi(tPageCount,cPageNo) If cPageNo<1 Then cPageNo=1 If tPageCount<1 Then tPageCount=1 If cPageNo>tPageCount Then cPageNo=tPageCount Dim NaviLength NaviLength=20 'NaviLength:顯示的數(shù)字鏈接個數(shù) Dim I,StartPage,EndPage StartPage=(cPageNo\NaviLength)*NaviLength+1 If (cPageNo Mod NaviLength)=0 Then StartPage=StartPage-NaviLength EndPage=StartPage+NaviLength-1 If EndPage>tPageCount Then EndPage=tPageCount If StartPage>1 Then Response.Write "<a class=""pageNavi"" href=""?PageNo=" & (cPageNo-NaviLength) & """><<</a> " Else Response.Write "<font color=""#CCCCCC""><<</font> " End If For I=StartPage To EndPage If I=cPageNo Then Response.Write "<b>"&I&"</b>" Else Response.Write "<a class=""pageNavi"" href=""?PageNo=" & I & """>" & I & "</a>" End If If I<>tPageCount Then Response.Write " " Next If EndPage<tPageCount Then Response.Write " <a class=""pageNavi"" href=""?PageNo=" & (cPageNo+NaviLength) & """>>></a>" Else Response.Write " <font color=""#CCCCCC"">>></font> " End If End Sub
%>
不過有一個缺點就是:如當(dāng)你想找99頁時點>>9次,要是有一個輸入框,輸入99后回車就到99就完美了。不知在DW+ASP中再怎么修改一下就能達(dá)到呢?期待。。。。
經(jīng)典論壇討論帖: http://m.95time.cn/bbs/NewsDetail.asp?id=2370754
出處:藍(lán)色理想
責(zé)任編輯:moby
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|