注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

汇总技巧

你快乐我快乐.... 汇集各类技巧,传播技巧,让我们共同熟练运用技巧..

 
 
 

日志

 
 

基于组件的asp编程之二--分页对象  

2011-06-03 11:57:50|  分类: ◆ASP技巧 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

基于组件的asp编程之二--分页对象
 在asp中,分页使用的最多的程序段了,把分页写成函数,调用起来,要传很多参数,写成对象,可以使分页
对象调用简单,本文在参考众多网友的分页函数基础上,用javascript把它写成了一个对像放于文件
夹_ScriptCom下,文件名为JPageNavbar.asp,先看一下分页对象的调用方式(由于大多数的asp开发人员使
用vbscript,所以本文的实例采用vbscript编写):
VBSCRIPT'>@LANGUAGE=VBSCRIPT %
!--#include file=connections/dbconn.asp --
!--#include file=_ScriptCom/FAdodb.asp --
!--#include file=_ScriptCom/FSession.asp --
!--#include file=_ScriptCom/JPageNavbar.asp --
%
 Response.Buffer=true
 on error resume next
 if trim(Request.ServerVariables(REQUEST_METHOD)) = POST then
 '取得查询字符串
 chxstr=readForm(chxstr)
 xshstr=readForm(xshstr)
 r1=readForm(R1)
 '保存查询条件
 session(r1)=r1
 session(chxstr)=chxstr
 session(xshstr)=xshstr
 else
 如果不是从form提交,则是分页,从session取的查询条件
 r1=readSession(r1)
 chxstr=readSession(chxstr)
 xshstr =readSession(xshstr)
 end i
 '这里是一些关于业务的逻辑运算
 if xshstr=empty then
 xshstr =查询所有记录
 end i
 select case r1
 case 1 '在校学生
 sql= select * from v_student_base where graduate=0
 if chxstrempty then
 sql=sql+ and + chxstr
 end if
 cddr=在校学生
 case 2 ' 毕业学生
 sql= select * from v_student_base where graduate=1
 if chxstrempty then
 sql=sql+ and + chxstr
 end if
 cddr=毕业学生
 case 0 '全部学生
 if chxstrempty then
 sql=select * from v_student_base where+ +chxstr
 else
 sql=select * from v_student_base
 end if
 cddr=全部学生
 case else
 response.write 系统参数错误,请与系统管理员联系!
 response.End
 end select
 '生成connection 和 Recordset
 set conn=connCreate(getDBLink())
 set rs=rsCreate()
 rs.open sql,conn,1,3
 if (rs.eof ) then
 show_msg 很遗憾,没有您要的记录!,4,infoQuery.asp
 end i
 dim gd(1)
gd(0)=未毕业
gd(1)=已毕业
 '***************************************************************************
 '注意:这里是分页
 RowCount =15
set fy=createJPageNavbar()
if (not isEmpty(rs)) then
 rs.PageSize = RowCount '设置数据集的页记录
 fy.PageSize=RowCount
 rs.AbsolutePage =fy.getCurrentPage()
 fy.RecordCount=rs.RecordCount
 fy.PageCount=rs.pageCount
 fy.PnWidth=100%
 fy.PnAlign=center
 fy.PlWidth=100% '表格宽度
 fy.PlAlign=right ' 表格的对齐方式
end if
'***********************************************************************************
%
HTML
HEAD
TITLE学生信息查询/TITLE
link href=css/style.css rel=stylesheet type=text/css
/HEAD
BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0
br
TABLE width=550 border=1 cellspacing=0 cellpadding=1 align=center class=t_table
ID=Table1
 TR
 TD colspan=2 class=t_head :::学生信息搜索结果::: /TD
 /TR
 TR
 TD width=80% align=leftB==gt;gt;查询条件:/B %=xshstr %/TD
 TD width=20% align=rightINPUT type=button value=返回 class=button
onclick=gofind() ID=Button1 NAME=Button1 /TD
 /TR
 TR
 TD colspan=2table width=100% border=0 cellpadding=1 cellspacing=0
class=t_table ID=Table2
 tr align=center
 td colspan=7%
 '***************************************************
 fy.pnDisplay() '分页的“上一页” “下一页”
 '***********************************************************
 %/td
 /tr
 tr
 td width=13% class=t_head学号/td
 td width=11% class=t_head姓名/td
 td width=8% class=t_head性别/td
 td width=10% class=t_head年级/td
 td width=20% class=t_head专业/td
 td width=28% class=t_head二级学院/td
 td width=10% class=t_head状态/td
 /tr
% i=0
 '********************************************************
 while (not rs.eof and iRowCount) '控制一页显示的记录条数
 '*********************************************************
%
 tr
 td width=13% align=centera href=# onclick=openWindow2('stu_msg.asp?
stu_num=%= rs(stu_num)%')%= rs(stu_num) %/a/td
 td width=11% align=center%= rs(name) %/td
 td width=8% align=center%= rs(sex) %/td
 td width=10% align=center%= rs(gread) %/td
 td width=20% align=center%= rs(speciality_name) %/td
 td width=28% align=center%= rs(secondary) %/td
 td width=10% align=center%=gd(rs(graduate)) %/td
 /tr
% i=i+1
 rs.moveNext
 wend %
 tr align=right
 td colspan=7%
'**************************************************************
fy.plDisplay() '分页列表
'**************************************************************
 %/td
 /tr
 /table /TD
 /TR
/TABLE
/BODY
/HTML
%
 rsNull(rs)
 connNull(conn)
%
这里是分页显示的效果图(做了一下处理)
这里是源代码
SCRIPT LANGUAGE=javascript RUNAT=Server
// ************************************************************************
// Script Compont Object Model
// Design for Active Server Pages
//
// Copyright 2003 Version 1.0
// Made by newsunet
// 请不要删除这一段注释,自由传播,保留所有权
// ************************************************************************
/*//Ado.RecordSet记录分页对象
//设置分页
 var RowCount =3
 var fy=new JPageNavbar()
 if (!rsRpt.Eof){
 rs.PageSize = RowCount //设置数据集的页记录
 fy.PageSize=RowCount
 rs.AbsolutePage =fy.getCurrentPage()
 fy.RecordCount=rs.RecordCount
 fy.PageCount=rs.pageCount
 fy.PnWidth=100%
 fy.PnAlign=right
 fy.PlWidth=100% //表格宽度
 fy.PlAlign=right // 表格的对齐方式
 }
//显示分页
%fy.pnDisplay()%
%fy.plDisplay()%
*/
function createJPageNavbar(){
//这个函数是vbscript的接口函数 ,vbscript不是基于对象的脚本语言
 var objJPageNavbar=new JPageNavbar
 return objJPageNavbar
}
function JPageNavbar(){
// public members
this.PageSize=0
this.RecordCount=0 //总记录数
this.PageCount=1 //总页数
this.CurrentPage=1
this.PnWidth=100%
this.PnAlign=right
this.PlWidth=100% //表格宽度
this.PlAlign=right // 表格的对齐方式
// private members
//public methods
this.getCurrentPage=_getCurrentPage
this.pnDisplay = _PN_show;
this.plDisplay = _PL_show;
//private methods
}
 function _getCurrentPage(){
 //当前显示的是第几页
 //取得当前页
 var pageNo = Request.QueryString (PageNo)
 //如果没有选择第几页,则默认显示第一页;
 if (isNaN(pageNo)) {
 pageNo = 1
 }
 this.CurrentPage=pageNo
 return pageNo
 }
 function _PL_show(){
 var strBuilder=new String()
 strBuilder=
 var p=(this.CurrentPage-(this.CurrentPage%10))/10 //计算分页显示的页数
 //首组为第0族
 strBuilder+=table border=\0\ cellpadding=\0\ cellspacing=\0\ 
 strBuilder+= width=\+this.PlWidth+\ align=\+this.PlAlign+\
 strBuilder+= tr 
 strBuilder+= td valign=\middle\ align=\right\分页:
 if (this.CurrentPage==1){
 strBuilder+=font face=\webdings\ color=\#ff0000\9/font 
 }
 else{
 strBuilder+=a href=\?PageNo=1\ title=\首页\font face=\webdings\9/font/a 
 }
 //上十页
 if (p*100){
 strBuilder+=a href=\?PageNo=+(p*10)+\ title=上十页font
face=\webdings\7/font/a 
 }
 strBuilder+=b
 //分页列表
 for(var i=p*10+1;i=p*10+10;i++){
 if (i==this.CurrentPage){
 strBuilder+=font color=\#000000\+i+/font 
 }
 else{
 strBuilder+=a href=?PageNo=+i+ title=\转到: 第+i+页\+i+/a 
 }
 if (i=this.PageCount) break;
 }
 strBuilder+= /b
 //显示下十页
 if (ithis.PageCount){
 strBuilder+=a href=\?PageNo=+i+\ title=\下十页\font
face=\webdings\8/font/a 
 }
 //显示尾页
 if (this.CurrentPage==this.PageCount){
 strBuilder+= font face=\webdings\ color=\#000000\:/font 
 }
 else{
 strBuilder+= a href=?PageNo=+this.PageCount+ title=\尾页\font
face=\webdings\:/font/a 
 }
 strBuilder+= /td/tr/table
 Response.Write(strBuilder)
 }
 function _PN_show(){
 var strBuilder=new String()
 var nextPageNo
 strBuilder=
 strBuilder+=table border=\0\ cellpadding=\0\ cellspacing=\0\ 
 strBuilder+= width=\+this.PnWidth+\ align=\+this.PnAlign+\
 strBuilder+=tr
 strBuilder+=td valign=\middle\页次:
[b+this.CurrentPage+/b/b+this.PageCount+/b]页 每页[b+this.PageSize+/b]条 总记录
数:[b+this.RecordCount+/b]条/td
 strBuilder+=td align=\right\
if (this.CurrentPage1){
 nextPageNo=this.CurrentPage
 nextPageNo--
 strBuilder+=[a href=?pageNo=+nextPageNo+ title=\转到上一页\上一页/a]
 }
 if (this.CurrentPagethis.PageCount){
 nextPageNo=this.CurrentPage
 nextPageNo++
 strBuilder+=[a href=?pageNo=+nextPageNo+ title=\转到下一页\下一页/a]
 }
strBuilder+=/td/tr/table
Response.Write(strBuilder)
 }
/SCRIPT
本文原名:asp分页的基于对象的解决

  评论这张
 
阅读(80)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017