分享
 
 
 

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

王朝asp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

在asp中,分页使用的最多的程序段了,把分页写成函数,调用起来,要传很多参数,写成对象,可以使分页

对象调用简单,本文在参考众多网友的分页函数基础上,用javascript把它写成了一个对像放于文件

夹"_ScriptCom"下,文件名为"JPageNavbar.asp",先看一下分页对象的调用方式(由于大多数的asp开发人员使

用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 if

'这里是一些关于业务的逻辑运算

if xshstr=empty then

xshstr ="查询所有记录"

end if

select case r1

case 1 '在校学生

sql=" select * from v_student_base where graduate=0"

if chxstr<>empty then

sql=sql+" and "+ chxstr

end if

cddr="在校学生"

case 2 ' 毕业学生

sql=" select * from v_student_base where graduate=1"

if chxstr<>empty then

sql=sql+" and "+ chxstr

end if

cddr="毕业学生"

case 0 '全部学生

if chxstr<>empty 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 if

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="left"><B>==&gt;&gt;查询条件:</B> <%=xshstr %></TD>

<TD width="20%" align="right"><INPUT type="button" value="返回" class="button"

onclick="gofind()" ID="Button1" NAME="Button1"> </TD>

</TR>

<TR>

<TD colspan="2"><table 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 i<RowCount) '控制一页显示的记录条数

'*********************************************************

%>

<tr>

<td width="13%" align="center"><a 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*10>0){

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 (i<this.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.CurrentPage>1){

nextPageNo=this.CurrentPage

nextPageNo--

strBuilder+="[<a href=?pageNo="+nextPageNo+" title=\"转到上一页\">上一页</a>]"

}

if (this.CurrentPage<this.PageCount){

nextPageNo=this.CurrentPage

nextPageNo++

strBuilder+="[<a href=?pageNo="+nextPageNo+" title=\"转到下一页\">下一页</a>]"

}

strBuilder+="</td></tr></table>"

Response.Write(strBuilder)

}

</SCRIPT>

本文原名:asp分页的基于对象的解决

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有