找回密码
 立即加入
搜索

查看: 1774|回复: 3

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

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

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

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

×
<>动态网页的数据处理速度直接影响到整个电子商务系统的性能!</P>; U& P+ J: V* g- b3 O
<>在数据量处理相对较大的分页技术上,更能体现出数据控制的重要性!</P>
! ~% ]. F# N1 H- }: y, l; G<>这里发一份用ADO控制数据库数据的分页方法。不知道哪位还能呈现更好的分页技术!?</P>
9 S, p) s" e! M& f  w! v/ h1 T" X( d<>为了方便,我把几个文件合在一起,而去掉了INCLUDE包含文件!</P>
5 X$ m" v$ t% j( y9 y<>&lt;%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%&gt;</P>- X* S6 U) N% ~( D: v$ L: w# h
<>&lt;%sub showlist(rs,page)%&gt;$ p2 |, A* w% p2 `* Z! X) i3 i3 f0 E
&lt;center&gt;&lt;font size=9 color=#3300cc&gt;漳州师范学院毕业生数据表&lt;/font&gt;&lt;/center&gt;&lt;br&gt;* P' s. }/ `2 {
&lt;ceter&gt;+ m6 n+ T5 g$ X: j( V
&lt;table border=1 cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" width="900"&gt;
/ K3 j' O5 O& {7 o2 a &lt;tr bgcolor=#00ffff&gt;
5 d' q& |4 \; j$ m8 e5 K &lt;td height="16"&gt;编号&lt;/td&gt;
6 F! F: ~7 u) Z* g&lt;%
/ F: m3 w5 |* [8 ^! @/ r9 n8 n for i=0 to rs.fields.count-11 W; J- p2 p' K% J/ A% l
%&gt;
8 |0 \  i9 R& m8 t7 P. R% H, g5 E &lt;td height="16"&gt;  &lt;%=rs.fields(i).name%&gt;&lt;/td&gt;
# p( J/ h  z/ G7 s&lt;%next%&gt;: P4 H1 p" W1 V/ k) S7 m6 t) o( b
&lt;/tr&gt;
# W' W9 ?# {" ?- y! x4 W" p7 m&lt;%
9 J. z- N( f1 V7 u/ X2 ` dim i
; K; b  H+ l( u; X rs.absolutepage=page
7 y* D8 h$ h1 i0 S0 X& r. O9 h for thepage=1 to rs.pagesize
3 v9 J6 v* V  n8 S response.write "&lt;/tr&gt;"
2 \( ?2 f' B, ?6 ] recnum=(page-1) * rs.pagesize + thepage2 Q+ p! [+ p- u5 o4 {
response.write "&lt;td&gt;" &amp; recnum &amp; "&lt;/td&gt;"3 w9 S* x3 H, ^" ^% P8 @9 D* q
for i=0 to rs.fields.count-1
) w6 Y% i# d$ D4 D7 v%&gt;1 t) h6 @$ i1 T- `
  &lt;td height="10"&gt;&lt;%=rs.Fields(i).value %&gt;&lt;/td&gt;
) C$ Z' p+ ~$ Y8 G &lt;% next %&gt;9 h" t7 P- h9 m* U) M  @5 ~
  &lt;/tr&gt;
: H7 L6 _" m3 T# X' N0 \6 e: P &lt;%  e" X+ }- t( g: }& `1 h$ ]. G8 M
  rs.movenext( z. a! g- B  ^" |1 u
  if rs.eof then exit for
; e* i9 u- m" c+ h% {8 t' `  w1 c  next
* T, t+ P7 ~7 u %&gt;
) o% U# e/ Q! R8 B; f( I' m&lt;/table&gt;
; k7 K5 c5 O' K3 y4 o2 a# P&lt;/center&gt;: Z/ ^5 e% ]5 x
&lt;%end sub%&gt;</P>
7 t/ K- D  O4 J6 y8 J<>&lt;%
' w0 ?2 [. [; c    connstr="DBQ="+server.mappath("data/database.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"3 b2 e7 y4 W: C6 @7 A
    set conn=server.createobject("ADODB.CONNECTION")# ~. q! ]2 n: c+ i' B; b, ?; u4 q
    conn.open connstr</P>
5 Z5 `1 X) P5 B% C% t3 A! S<> sql="select * from 漳州师范学院师范类毕业生"0 ^" u  v2 \1 p# M. P. M- X4 P
Set rs= Server.CreateObject("ADODB.Recordset")' K! z3 e$ P. t5 F+ e4 M
rs.PageSize=20
) \) o! h+ k& O2 v2 v1 Q3 s& w rs.open sql,conn,1,1
1 t, D9 v; i5 R1 N2 @( J
( K5 R1 e& K" I7 `: U%&gt;$ Z+ V- F1 x: v- N9 v0 R/ ]
&lt;% If rs.RecordCount=0 then %&gt;
, k& x% s( X% d7 t9 k+ W+ k% b& g- H&lt;%
/ p' E- h! Q9 V     response.write ("对不起,数据库中没有相关信息!")
* B& t  o" r3 u$ U%&gt;   
" Q3 l* Y" w3 _4 S! q&lt;%else%&gt;, Y1 z8 g2 B$ c
&lt;%
& K4 g& F" z$ Q3 wrs.pagesize=22" W$ L( X  W& i! S. q4 D1 A' Z
page=clng(request("page"))
; H1 [' q/ S4 v  ~4 Aif page&lt;1 then page=1
9 Z+ m  ^- S. T- W* a! c# B5 Nif page&gt;rs.pagecount then page=rs.pagecount
: w: i6 \, H1 I6 rshowlist rs,page* U- y2 m5 q4 H. I- {: W
%&gt;
2 T3 [6 m0 s: W$ r8 B6 I2 R&lt;html&gt;5 w5 ]% [! S% h2 p3 c
&lt;head&gt;&lt;/head&gt;
3 l5 w( _2 H' V- B/ [&lt;body&gt;$ o# A* X2 @8 E
&lt;form action=show.asp method=get&gt;0 u7 d3 _) T3 q/ T- k1 R
&lt;center&gt;
' G& ~. Y' o! l% w" v% H1 z* B' _&lt;%
) x+ D/ Z+ m. S# f6 o. p if page&lt;&gt;1 then
: N+ w* d9 ~8 m% C3 S response.write("&lt;a href=show.asp?page=1&gt;第一页&lt;/a&gt;")
5 J/ b# v% A: ]8 N) t response.write"&amp;nbsp;&amp;nbsp;&amp;nbsp;"
8 C; ?! k% t0 Y4 u5 n0 P- ~# S response.write("&lt;a href=show.asp?page=" &amp; (page-1) &amp; "&gt;上一页&lt;/a&gt;")* P* u- J3 O- y- a- d
end if
1 k. M" [$ }6 u; f; S
6 l% f( P" ]7 [% X: } if page&lt;&gt;rs.pagecount then
9 E2 N% G- `. U, s% y& P1 K9 B  \ response.write"&amp;nbsp;&amp;nbsp;&amp;nbsp;"
9 [: x' J) j) q3 H5 ]9 j response.write("&lt;a href=show.asp?page=" &amp; (page+1) &amp; "&gt;下一页&lt;/a&gt;")
5 h  T) J+ n& v* W& F3 Z* @% s response.write"&amp;nbsp;&amp;nbsp;&amp;nbsp;"& _' p' L: V! y
response.write("&lt;a href=show.asp?page=" &amp; rs.pagecount &amp; "&gt;最后一页&lt;/a&gt;")4 |6 d4 k( c1 I6 S# s8 q5 |/ M
end if9 H6 P9 `6 g% a. s) a$ {% \$ M& V
%&gt;
' F& N$ Q! D! R% J. N4 u&lt;%end if%&gt;) Z1 I2 |+ k4 k* ?3 G* T
请输入页码&lt;input type="text" name=page size=2&gt;, r4 p6 \4 S; Z5 R6 H
页码:&lt;font color="red"&gt;&lt;% =page%&gt;/&lt;%=rs.pagecount%&gt;&lt;/font&gt;
/ u: a' Z7 V! P& y&lt;/center&gt;
% G) O# Y+ o% u7 b( \$ g; c&lt;/form&gt;/ g0 p9 x: \4 R6 t: W+ k
&lt;/p&gt;&lt;/div&gt;
# h! _" S' n& m&lt;/body&gt;</P>
7 o1 x2 |; U0 P7 Y<>&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 排序)0 R3 ]1 L* U. M" x# H7 ]
   2.每页显示20条记录
: u: l+ v) z3 u2 t   3.当前显示第5页/ [$ t% I( w/ [6 U
  
$ c8 F: x5 Q5 ]. V' e9 Y) o  实现如下:+ d4 g. R+ Y$ k
   select * from
& p" f# x/ I- g8 E   (% s8 T' p; p9 J
   select * from (select top 20*4 唯一ID,其他字段 from 表集 where 条件 order by 排序) as a
. f0 Y. x* c$ A! N+ X. Q. Q+ W   union all
$ g, I; W+ G5 ]9 l) t  R& f$ L   select * from (select top 20*5 唯一ID,其他字段 from 表集 where 条件 order by 排序) as b 5 k0 Z' A* K) d8 G
   )
4 u7 i# l5 K( S$ \8 h' R* y7 x   a & q! l7 \5 E5 p+ F, i  o& G
   group by 唯一ID,其他字段 having count(唯一ID)=1 order by 排序1 w8 I: D2 u0 z. e5 m$ t+ H, f
   ) X( r( a1 O# E
  运行此SQL,至此取记录集后N条记录大法就些完毕, f5 R2 f) k# [
  
& s* C; k4 r9 n+ s% j5 y  详细说明:
, X' V: t3 P: }4 G. C3 C  
. b: w8 [. M# k! r  C4 d# m. F) W( _. P  此SQL语句的关键应用技巧在于union all和分组上的条件过滤语句- U# |+ Z  Z4 R# K7 e
  
  @# i7 f, k& Q' |  大家可以根据此技巧完全可以做出一个通用的分页方法,如直接由用户传入sqlstr(sql语句),NumPerPage(每页显示数),currpage(当前页),自己在再函数内组织成通成的SQL分页语句  H  R* n  \, Y) n
  $ q% ~- _  u9 [
  备注:1 h' i- p+ a( O2 d
  9 @7 y5 l# e5 H
  当前页为1的话就不需要运行该SQL了,直接TOP一下就OK了  W- u  n; Q/ i& Q
  由于没有环境,该SQL性能无法测试,但相信不会低效( U5 `5 m, t. U& B
  运行平台在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 08:43 , Processed in 0.046536 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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