找回密码
 立即加入
搜索

查看: 1773|回复: 3

[原创]ASP动态网页的分页技术

[复制链接]
vicwr 发表于 2004-5-23 07:40:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。

您需要 登录 才可以下载或查看,没有账号?立即加入

×
<>动态网页的数据处理速度直接影响到整个电子商务系统的性能!</P>4 p/ v# ?) Z0 v
<>在数据量处理相对较大的分页技术上,更能体现出数据控制的重要性!</P>" o3 B" y' |( r* C' V3 O
<>这里发一份用ADO控制数据库数据的分页方法。不知道哪位还能呈现更好的分页技术!?</P>
3 H. v$ w$ |4 B9 b<>为了方便,我把几个文件合在一起,而去掉了INCLUDE包含文件!</P>
+ E3 I  c. [9 p<>&lt;%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%&gt;</P>0 S& e5 N# r& x+ N
<>&lt;%sub showlist(rs,page)%&gt;
8 B8 H0 J4 v3 n* T&lt;center&gt;&lt;font size=9 color=#3300cc&gt;漳州师范学院毕业生数据表&lt;/font&gt;&lt;/center&gt;&lt;br&gt;
; E) i6 R1 @$ L# J4 N# X! X&lt;ceter&gt;
2 C9 ~9 B1 C9 U. L3 @; k&lt;table border=1 cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" width="900"&gt;
& S( j2 O' E. A* o &lt;tr bgcolor=#00ffff&gt;
' u3 ], Z# G: Q) k) G! K& E2 H &lt;td height="16"&gt;编号&lt;/td&gt;
! K8 U1 n. P- y" Y&lt;%5 G5 @* Q' Y6 x
for i=0 to rs.fields.count-1
3 N% |) t% u- x* L%&gt;
0 ]( U% z* V1 y0 ]3 W &lt;td height="16"&gt;  &lt;%=rs.fields(i).name%&gt;&lt;/td&gt;5 P$ T0 I7 z; H7 b/ N
&lt;%next%&gt;+ I% v6 I: \7 Y- ]; e
&lt;/tr&gt;8 H' c6 X0 U1 \" `3 p
&lt;%
. t0 u) O5 n5 w/ J( B- u  A( D! [1 r dim i
9 H9 Q' ?$ R  x2 U' R8 z8 T rs.absolutepage=page) @1 T0 [7 e5 c
for thepage=1 to rs.pagesize$ I5 [6 Y1 |# @
response.write "&lt;/tr&gt;"3 ~+ e; p5 G7 d: t% s: i) M3 v5 ]' F
recnum=(page-1) * rs.pagesize + thepage
' I, h. x  q! w  C response.write "&lt;td&gt;" &amp; recnum &amp; "&lt;/td&gt;"1 O$ h8 S9 o) v5 k
for i=0 to rs.fields.count-1* y/ T4 U# w) \& w/ a
%&gt;4 k6 Y+ h# d# k4 Z0 W
  &lt;td height="10"&gt;&lt;%=rs.Fields(i).value %&gt;&lt;/td&gt;
) i: r; ~  p6 o &lt;% next %&gt;- Y% m* r' |3 p' Y& s
  &lt;/tr&gt;
9 D4 E! o0 b6 l' t &lt;%
5 V; n$ K# o% @: N  B5 ^; s  rs.movenext
  d+ |9 @" Q$ z  T' v7 Y! {  if rs.eof then exit for + U% D: i) u6 p  A1 }1 ]( h9 G. J* c
  next* p( l, }. _+ q% q1 C# u
%&gt;( y0 z8 C  x# C: B/ h$ n
&lt;/table&gt;, q8 m* }+ w0 ~& a
&lt;/center&gt;
  ~8 m$ s3 [- K! n6 z9 m; p# O: t&lt;%end sub%&gt;</P>
6 o# v7 W" P; m0 O" u$ D( E<>&lt;%
, p& O6 A. Y: i" k9 V3 t    connstr="DBQ="+server.mappath("data/database.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
! i9 `; j+ [/ m. e  _2 N- N  n/ m    set conn=server.createobject("ADODB.CONNECTION")4 ?& P8 ^' H- m( [
    conn.open connstr</P>
; }2 H$ U; p" t8 s9 o% T% E<> sql="select * from 漳州师范学院师范类毕业生"
5 _* Q$ m2 k7 a' w; Z. a4 V Set rs= Server.CreateObject("ADODB.Recordset")9 _- C. N0 A4 K8 E) u+ [; j; o$ n. r# }
rs.PageSize=205 D( f: A  z- z: S
rs.open sql,conn,1,1
" O& q+ }7 |& c( T 5 [3 @2 \3 c0 b9 w) w; u
%&gt;
# q( }0 V5 e+ M&lt;% If rs.RecordCount=0 then %&gt;
9 p  y, s  a8 i4 j&lt;%
2 t/ T7 p& d$ S. V' }8 M) J     response.write ("对不起,数据库中没有相关信息!")' `. L; h+ j( G1 p/ O, Y9 D3 F
%&gt;   
4 o- s! X7 }9 \0 B1 \" d2 i  v+ ?&lt;%else%&gt;  T/ l/ Q+ C# n5 [
&lt;%4 U% E- A$ Q6 _1 F8 i
rs.pagesize=221 b3 g$ h! e( p
page=clng(request("page"))
" I: f  f" \2 O( F7 P& Oif page&lt;1 then page=16 {% |- ~( i; @2 B3 P4 v+ e0 N
if page&gt;rs.pagecount then page=rs.pagecount
) C2 l/ _6 {0 E2 h4 Cshowlist rs,page8 L% h" _; C- B6 M0 V" j! T3 Y
%&gt;) l5 y% S  s: @& e) ]8 e/ Y3 m
&lt;html&gt;
0 G: u1 }% A# I! F: C! H&lt;head&gt;&lt;/head&gt;
# J( P. M! K! @. P: i' e&lt;body&gt;
/ ^* s& S* S$ d, s2 |3 \( ]9 M&lt;form action=show.asp method=get&gt;! A5 Y6 K- @3 Q
&lt;center&gt;5 J- G- a) s% Q. T9 p4 M
&lt;%, |( l( s4 B  F, }; b/ J' b
if page&lt;&gt;1 then
  C6 M) r/ ?! \5 @. c  H response.write("&lt;a href=show.asp?page=1&gt;第一页&lt;/a&gt;")( t' P3 j# E2 ^8 y8 y
response.write"&amp;nbsp;&amp;nbsp;&amp;nbsp;"
3 A* L; w0 _- a; j: }8 j( Z2 g response.write("&lt;a href=show.asp?page=" &amp; (page-1) &amp; "&gt;上一页&lt;/a&gt;"): f& d( x0 }! ]
end if
* n+ e' J8 a5 r% D . F8 e* v! R1 G8 L$ g) Q: U3 C
if page&lt;&gt;rs.pagecount then& \- B7 i) w' ?- U
response.write"&amp;nbsp;&amp;nbsp;&amp;nbsp;"4 z. v; x8 ^; |& G4 s- N/ \
response.write("&lt;a href=show.asp?page=" &amp; (page+1) &amp; "&gt;下一页&lt;/a&gt;")
8 w7 f2 e, ~3 Y2 p3 x7 S* \7 C* I response.write"&amp;nbsp;&amp;nbsp;&amp;nbsp;"
: e; j% X. l/ |4 V7 W/ ?9 k7 R response.write("&lt;a href=show.asp?page=" &amp; rs.pagecount &amp; "&gt;最后一页&lt;/a&gt;")4 \8 N6 F; h" b5 s
end if
- ~0 W* x4 C+ k0 `%&gt;
  a0 e7 [2 s# d; w# Z&lt;%end if%&gt;. _6 M6 h5 f2 v+ i# p" ]
请输入页码&lt;input type="text" name=page size=2&gt;
, L% _3 w; d7 V页码:&lt;font color="red"&gt;&lt;% =page%&gt;/&lt;%=rs.pagecount%&gt;&lt;/font&gt;8 j# \) l- T3 Z% t. ~" d0 {
&lt;/center&gt;2 J* C5 K5 s0 R& S
&lt;/form&gt;* _& X9 `" v% {) _% `' M
&lt;/p&gt;&lt;/div&gt;
2 f1 H8 b1 |: x&lt;/body&gt;</P>1 m" t* L/ w! K/ t+ a) A: ?
<>&lt;/html&gt;</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
 楼主| vicwr 发表于 2004-5-23 07:48:06 | 显示全部楼层
<>大家看看下面这种分页方法,是用SQL语言进行优化。号称史上最强的分页方法。</P><>不过这属于SQL的技巧,而不是ASP的优化了!当然这个执行效率的确快很多!</P><>ASP学习:史上最强的数据分页方法 </P><>1.有一sql语句将产生1000条记录 (select 唯一ID,其他字段 from 表集 where 条件 order by 排序)- p, `2 ~7 A/ h
   2.每页显示20条记录6 T+ h8 P3 {+ c5 `8 c$ v% s4 M9 |9 |
   3.当前显示第5页
2 @( t1 r5 K( s& j  - {- |0 f/ F" P6 y$ T0 v
  实现如下:
0 D2 N* V' N) ]- h3 o' z   select * from * |$ c8 G8 W+ U- \9 X
   (, E; v1 _2 {0 g: O  |
   select * from (select top 20*4 唯一ID,其他字段 from 表集 where 条件 order by 排序) as a# c# ]; Y9 S" o( F
   union all  Z( A0 ]; h  ?' W+ |2 V: Q
   select * from (select top 20*5 唯一ID,其他字段 from 表集 where 条件 order by 排序) as b
' D3 j8 g+ v* z+ S: H' F   ) ( d5 a5 q3 o: |. Z% l
   a
# j/ Z6 X4 v: y/ W" r4 K( @   group by 唯一ID,其他字段 having count(唯一ID)=1 order by 排序
9 P! Z9 s7 A; G0 ^  
2 h/ c1 ?  G4 L+ F, W$ M* @$ V  运行此SQL,至此取记录集后N条记录大法就些完毕) ^1 ^& I/ U! [* z( W* J: b" Q
  ! l8 S* T2 N7 Z; H
  详细说明:
  [% \  g1 h. n' [* V) W- Z  2 ^! i" b4 s1 x
  此SQL语句的关键应用技巧在于union all和分组上的条件过滤语句8 j' s* X# Y' y: [
  6 N$ g+ B  {. q! h+ S* ^
  大家可以根据此技巧完全可以做出一个通用的分页方法,如直接由用户传入sqlstr(sql语句),NumPerPage(每页显示数),currpage(当前页),自己在再函数内组织成通成的SQL分页语句
$ B& ]  y& |" V# ]" c9 e  , z0 v  B% y  k: h% I
  备注:' J0 N2 r/ `4 V9 m+ V5 \
  . [% }* J: d7 E4 v) s' d/ b7 T8 n, q
  当前页为1的话就不需要运行该SQL了,直接TOP一下就OK了+ }- i4 [- z3 J0 Q0 m
  由于没有环境,该SQL性能无法测试,但相信不会低效
  W8 B5 K/ u9 j. O' S1 d1 `  运行平台在access,sqlserver上都可运行,其它数据库平台只需改top关键字应该就可以就地运行了</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

饿狼 发表于 2004-5-23 09:06:34 | 显示全部楼层
<>大哥呀</P><>我要这些我也有啊</P><>但是现实和理想是有一定的区别的啊</P>
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

麦客 发表于 2004-5-23 18:53:58 | 显示全部楼层
这些东东我喜欢!
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|龙江曦月 ( 闽ICP备05009150号-1 )闽公安网备35060202000316

GMT+8, 2025-5-25 07:57 , Processed in 0.059475 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表