草根站长论坛's Archiver

阿祥 发表于 2007-7-15 18:58

学习参考:用Dreamweaver+ASP实现网页分页

今天心情有点激动,想把"关于用DW+ASP实现分页技术的参考"分享给用DW+ASP做网页的朋友们.去掉只有"第一页,前一页,下一页,最后一页"的小痛苦 。cm$nw k'J`eF#m
  此效果最后的显示是:第N页[共*页] <<1 2 3 4 5 6 7 8 9 10 >>。   用DW+ASP做网页时,在绑定记录集后,代码页里马上出现以下代码:
(]RU)m(T!S}3B*FB ? <%   
y/}2B1]!c Dim Recordset1    czCS p5~r}
Dim Recordset1_numRows   
/p3njq bnO Set Recordset1 = Server.CreateObject("ADODB.Recordset")   
y;GG%qI)[ i Recordset1.ActiveConnection = MM_数据库名_STRING   zzU4\U!t|"D
Recordset1.Source = "SELECT * FROM 表名"   
A)k@9F] s8UU1@/tO.D Recordset1.CursorType = 0   
C G-@2}eESy Recordset1.CursorLocation = 2   Vh Y2EK xl D
Recordset1.LockType = 1   
gn |R"@j Recordset1.Open()   
i^3SV(u Recordset1_numRows = 0   8@w [;_1o#M
%>  AV_ZAN @(p,u

[)i!VilTW&be6x2C   现在我们要来对代码做点修改,请在上面代码中修改为如下的代码: <%    }%n*\ZD6tO9J
Dim I   
(mF(Ze BE'e-M5y;] Dim RPP   
?~#T.pDd+si Dim PageNo   
](`7h)}D;a8w I=1   
.j2Tx,a,T*P PA H RPP=50   (P(j2r| P[ R-\
PageNo=CInt(Request("PageNo"))   )|;J O I#WO.`
’上面即是新插入的,    Y~:r~8AVv-r9b!^`.I
Dim Recordset1   SWT0Ie
Dim Recordset1_numRows   s/i_u!s-CPo
Set Recordset1 = Server.CreateObject("ADODB.Recordset")   
I/r nZ(fq"a8mr Recordset1.ActiveConnection = MM_数据库名_STRING   
Zr6_2LF Recordset1.Source = "SELECT * FROM 数据库名"   
FTi-EV0q n@ z Recordset1.CursorType = 1 ’将上面代码的0改为1.   
x'i V0w-O!HsB Recordset1.CursorLocation = 2   
`V0G`0Xm'm)Lim Recordset1.LockType = 1   
.F ^F/l^*W0H Recordset1.Open()   R0J0Yz'S1ro
Recordset1_numRows = 0 ’再在此行的下一行开始加入如下代码:   
%~tG/ol Recordset1.PageSize=RPP   
4ry)h[`d iB If PageNo<=0 Then PageNo=1   
}a'U#Z? D JE`&b If PageNo>Recordset1.PageCount Then PageNo=Recordset1.PageCount   
C5X {%Nh'T0p5v Recordset1.AbsolutePage=PageNo   
A$P{7D b Sub ShowPageInfo(tPageCount,cPageNo)   0~3W/vzR&]F7h*v,V{ H
Response.Write "第"&cPageNo&"页[共"&tPageCount&"页]"   
P HTLQTY9A [ End Sub   
^*o n%i'x5W hO+J Sub ShowPageNavi(tPageCount,cPageNo)   
s9bqw1B$SWR6L If cPageNo<1 Then cPageNo=1   
:R/Y vm;l/I If tPageCount<1 Then tPageCount=1   4v7J"Dt7i9sA,GaSL%A
If cPageNo>tPageCount Then cPageNo=tPageCount   )Kz*{hA D
Dim NaviLength   .S8T[7j9Z"Aq
NaviLength=10 ’NaviLength:显示的数字链接个数   #B/B*qK*I^I/aL;~
Dim I,StartPage,EndPage   N"[c3L \ s0DY3P
StartPage=(cPageNo\NaviLength)*NaviLength+1   I~RRb*I2u6M
If (cPageNo Mod NaviLength)=0 Then StartPage=StartPage-NaviLength   |h\0LQ1M
EndPage=StartPage+NaviLength-1   
X:F D0l)Bm+~8_+o.H If EndPage>tPageCount Then EndPage=tPageCount   
'tG6Zw'@f gI If StartPage>1 Then   
y1}A\ IMV+NM Response.Write "<a class=""pageNavi"" href=""?PageNo=" & (cPageNo-NaviLength) & """><<</a> "   4V;T lAcu ad
Else   ]:{C}X)f @
Response.Write "<font color=""#CCCCCC""><<</font> "   
NM&J-T8|:?4E.E End If   v }5` fO9x!yG/g
For I=StartPage To EndPage   
`ZDir4KA_b qf If I=cPageNo Then   +l I1]X|Q&D
Response.Write "<b>"&I&"</b>"   8} Q|^cW)k6q
Else   
K#A.Z%u(dU#utI Response.Write "<a class=""pageNavi"" href=""?PageNo=" & I & """>" & I & "</a>"   
Lw-}Gw&M5w `^ End If   
X{)e'S$eK B#\ If I<>tPageCount Then Response.Write " "   #_#}5n8V/R `"Gz\
Next   
+iiYu+E~/`ce8} If EndPage<tPageCount Then   
{ ` ^2z&U"w q Response.Write " <a class=""pageNavi"" href=""?PageNo=" & (cPageNo+NaviLength) & """>>></a>"   0E&R ?4GYL
Else   #R%d9\5ZEYt!R
Response.Write " <font color=""#CCCCCC"">>></font> "   L1c2|/wx
End If   !]RiUPS
End Sub   
,f_P!^"zA](S %>  0ff U"v ^.A5PT
上面代码中:RPP:指定每页显示的记录条数。即每页显示几条数据。   NaviLength:显示的数字链接个数,即10就为1 2 3 ...10的连接个数。
,o:l.sSbQ   若要显示所有连接的页(个)数,你可以设置为:NaviLength=tPageCount。
;la?0F_t}A W   这时代码已经差不多了,但还要在显示的地方(如表格)中加点代码才行吧,(要不然怎么显示,呵~~~)如我们插入一个2行3列的表格。 D&G}9ku4N/O{
  1.将光标移在第一行第一列中,切换到代码中加入:<%=(PageNo-1)*RPP+I%> 0[wg _+nB
  这个代码是显示序号用的。 +x/l4Ns3?^
  2.右边2个单元格(当然你自己可以根据需要分更多的列)就是为你要显示的记录了。请分别从绑定的记录集中选中你要显示的字段拖放在相应的单元格中,(也可以选中后再点右下角的“插入”按钮)。这里我们就先拖2个进来如“编号”和“公司名称”。分别到1行第2个单元格和1行第3个单元格中。
-LY b~.P   3.这个是个关键的,请将光标移到第一行任意单元格中,再来点选窗口底下的<tr>,这时你看看代码,<tr>....</tr>就被选中了。这时请在<tr>....</tr>的前面插入如下代码: u*x\-zi6fV0o
v(BA'eQ4_"x,j Bd
<%   
g;F:p.W'X3b l#km)I k If Recordset1.EOF OR Recordset1.BOF Then   
9n1h!RXZW1z` Else   
]L}*o:a8[:d(h$^F For I=1 To RPP    ^4Id^D m1l
%>再在<tr>....</tr>之后插入如下代码:   
Q@/RFK"^W d <%   'RJ3c(?.G@#i k&Zy{
Recordset1.MoveNext   
9La!w%hev If Recordset1.EOF OR Recordset1.BOF Then Exit For   4B P/N*[h\uAs
Next   
U(lGb.g#m End If   
4oy6x+B1?a1^U)G1@ %>  
U3Qobx-h%O2c O6\
:L"df/qu;ALz#U
`&Ld(R] RxB   4.这是就完成表格的第一行的工作。下来也是关键,即分页的连接。光标在第2行第一个单元格中时在代码窗口插入: <% showPageInfo Recordset1.PageCount,PageNo %> 的代码。右边的2个单元格将其合并,在代码中插入:
zl7C2KWHU <% showPageNavi Recordset1.PageCount,PageNo %> 的代码。R0pjKaF~'K
  5.大功告成!这时感快预览一下吧。。。。 'Z5j!{4BPd-O
  表格的全部代码如下: 5^Vd6`3w#x
<table width="710" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#333333">   #d!I#~s*bp
<%   
T7ahi4kF If Recordset1.EOF OR Recordset1.BOF Then   i7g"I/a$O#r t ?!T
Else   Eo"LCW/Yz
For I=1 To RPP   T DY$pS#l
%>   
l7E(\ ljf3EET <tr bgcolor="#FFFFFF">   
KYX2N-zn"N#Ip z <td width="30" align="center"><%=(PageNo-1)*RPP+I%></td>    A0pQpeD3Q
<td><%=(Recordset1.Fields.Item("编号").Value)%></td>   
s'E(\'W&vvyX9K <td><%=(Recordset1.Fields.Item("公司名称").Value)%></td>   
s NV_P9c5N Z H </tr>   t(O{HI
<%   *^ JN w\S
Recordset1.MoveNext   
0ur vKH If Recordset1.EOF OR Recordset1.BOF Then Exit For   hzN)q n~
Next   
.]~;ZD3@sL ^T End If   `cO2Hli[6XVl6i^'n
%>   
ov#f"P~Y4yGT <tr bgcolor="#FFFFFF">   y+Akc^
<td colspan="3"><table width="100%" border="0" cellspacing="0" cellpadding="2">   
q$z#B%t)|Z+Pz <tr bgcolor="#006699" class="w12">   c+e!w0NzR!lP-`
<td width="121" align="center"><% showPageInfo Recordset1.PageCount,PageNo %>   
[w:D"wA </td>   
5X.E_.ja!mit"T@"Wd <td width="573" align="center">   9vUt5tnoP;Q{
<% showPageNavi Recordset1.PageCount,PageNo %>   "qo(f(Q&Mv)^
</td>   
CXs6XOw </tr>   Z9J O8R)JMx
</table></td>   
3SF[|6Nl?._ </tr>   
F}W_"K2H </table>  +zd:JdH!g b

p,RcJ#~ ej"O1K 这时你去点应用程序中的“服务器行为”中的记录集,在代码中就显示为一下代码,也是我的原代码:
&zo9p }.M(I{7_E6\Y
*dmqzqN9F <%   'g.jA&t i$q
Dim I   !|P ]6mU|Z
Dim RPP’RPP:指定每页显示的记录条数,   1TRx"L(EU
Dim PageNo   
I}2b"N/]P[p I=1   
^-B'cU$p*^ RPP=50   
6X&?-i;]+{OT1~(x PageNo=CInt(Request("PageNo"))    B'N"\;xw-a2V
Dim Recordset1   
(~%WkM&XI#S` Dim Recordset1_numRows   
(|1I5[D/z1_;m Set Recordset1 = Server.CreateObject("ADODB.Recordset")   TR4A:}@?5Nh%T
Recordset1.ActiveConnection = MM_数据库名_STRING   :^"C An/|3P/JP.P6~
Recordset1.Source = "SELECT * FROM 表名 ORDER BY 编号 ASC"   
8@K/op\~Hw Recordset1.CursorType = 1   
MQlXf sM e` y Recordset1.CursorLocation = 2   0q2C$@(m,R
Recordset1.LockType = 1   
W-Q%a)t bx q s,_ Recordset1.Open()   
J~&y T2Q'WQM.t Recordset1_numRows = 0   
%tAq;p:O2c%X Recordset1.PageSize=RPP   
,OE.cQ]GY If PageNo<=0 Then PageNo=1   0y)r8J:oE+Y"AHE)n(TF
If PageNo>Recordset1.PageCount Then PageNo=Recordset1.PageCount   
1FITV(A Recordset1.AbsolutePage=PageNo   3yu i;b&V
Sub ShowPageInfo(tPageCount,cPageNo)   
x{3}Wkp6F,S7`l Response.Write "第"&cPageNo&"页[共"&tPageCount&"页]"   he2o`B
End Sub   
CA?-^/M3P} C Sub ShowPageNavi(tPageCount,cPageNo)   
w[L"?0H r If cPageNo<1 Then cPageNo=1   wa7A3k7~n-o,J7d6A E8x
If tPageCount<1 Then tPageCount=1   f%q0A ?*b9X b
If cPageNo>tPageCount Then cPageNo=tPageCount   
2xm P1oV v { Dim NaviLength   T Or wt
NaviLength=20 ’NaviLength:显示的数字链接个数   
8}9rtK E e Dim I,StartPage,EndPage   ]iY6JH(AM)\7n f
StartPage=(cPageNo\NaviLength)*NaviLength+1   
/WM`F R)e If (cPageNo Mod NaviLength)=0 Then StartPage=StartPage-NaviLength   [1C"o!NT
EndPage=StartPage+NaviLength-1   
6k"_H]qe'Y If EndPage>tPageCount Then EndPage=tPageCount   
q X#U,Z$T;f} G If StartPage>1 Then   
yos!i.KpW Response.Write "<a class=""pageNavi"" href=""?PageNo=" & (cPageNo-NaviLength) & """><<</a> "   9YX3y8@ optV
Else   
I_"V+b1b6O y Response.Write "<font color=""#CCCCCC""><<</font> "   j4yd-KT
End If   
F+UY _Mn For I=StartPage To EndPage    D(s4h"C:\#z/QxSn
If I=cPageNo Then   
\0I0FI{E,K Response.Write "<b>"&I&"</b>"   t0G:W)x&`/h0O+RM
Else   3VAge ARc_t2~
Response.Write "<a class=""pageNavi"" href=""?PageNo=" & I & """>" & I & "</a>"   8`"M$w~} arff
End If   
v{ g%{ W If I<>tPageCount Then Response.Write " "   {1tg;vj)W]:B
Next   `Iba.F
If EndPage<tPageCount Then   
|extqwH` Response.Write " <a class=""pageNavi"" href=""?PageNo=" & (cPageNo+NaviLength) & """>>></a>"   t.]2g]cuo
Else   
8v6MGA#J5Y Response.Write " <font color=""#CCCCCC"">>></font> "   
[;{1EN^o9wj End If   3BO#cDm.N&N W
End Sub   Vh4`4s'}8uc-Y'NWRP
%>  |u9r:l|\/I
  不过有一个缺点就是:如当你想找99页时点>>9次,要是有一个输入框,输入99后回车就到99就完美了。不知在DW+ASP中再怎么修改一下就能达到呢?期待。

页: [1]

Powered by 草根站长网 © 2007-2008