通用分页显示函数

来源:互联网 发布:软件系统技术要求 编辑:程序博客网 时间:2024/04/27 17:32
<%
Option Explicit
Response.Buffer = True
On Error Resume Next
Dim StarTime,EndTime,Sql_Use,Conn,Db,ConnStr

Rem ##########################################################################
Rem ## 说明:本例中使用的数据库是动网论坛IP数据库 ##
Rem ## 如果不想更换可以自行从动网论坛中找。 ##
Rem ## 如果想更换数据库,那么你必须修改相应的SQL语句和其它参数 ##
Rem ## 发布的该文档中我将JS附加在下面了,并且去掉了CSS等,可自行添加啦! ##
Rem ##########################################################################

StarTime = Timer()

'第一次使用请修改本处数据库地址并相应修改data目录中数据库名称
'Db = "DataBase/iXuEr_Data_PAMS1.mdb"
Db = "/DataBase/Ipaddress.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db)

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open ConnStr

If Err Then
Err.Clear
Set Conn = Nothing
Response.Write "The database connection error, please check the connection character string."
'Response.Write "数据库连接错误,请检查连接字符串。"
Response.End
End If

Function CloseDB()
Conn.close
Set Conn = Nothing
End Function
'=========================================================
' 文件:iXuEr_Data_PageShow
' 功能:将指定数据库的指定项目进行分页读取
' 时间:2004-08-29
' 作者:Guidy
' 版权:iXuEr Studio
'=========================================================
' Copyright (C) 2004-2006 114XP.CN All rights reserved.
' 官方网站:HTTP://www.114xp.cn
' 技术论坛:HTTP://bbs.114xp.cn
' 电子信箱:guidy@qq.com,guidy@psysch.com
'=========================================================

Dim SqlStr,DateNums,PageNums,URLs

SqlStr = "SELECT * FROM dv_address"
Conn = Conn
DateNums = 20
PageNums = Request("Page")
URLs = ""

'################################################################################
'使用之前需要预先定义这三个函数,根据自己适用情况而定
'################################################################################
Function iXuEr_Page_DHead()
Response.Write("<hr>表头<hr>")
End Function
'--------------------------------------------------------------------------------
Function iXuEr_Page_DBody(DPS_Rs)
Response.Write("数据:" & DPS_Rs("IP1") & "---" & DPS_Rs("IP2") & "---" & DPS_Rs("country") & "---" & DPS_Rs("city") & "<br>")
End Function
'--------------------------------------------------------------------------------
Function iXuEr_Page_DTail()
Response.Write("<hr>表尾<hr>")
End Function
'################################################################################
Call iXuEr_Data_PageShow(SqlStr,Conn,DateNums,PageNums,URLs)
'################################################################################
Function iXuEr_Data_PageShow(SqlStr,Conn,DateNums,PageNums,URLs)
'=========================================================
' 函数:iXuEr_Data_PageShow(SqlStr,Conn,DateNums,PageNums,URLs)
' 功能:将指定数据库的指定项目进行分页读取
' 参数:SQL语句,数据库链接对象,每页数量,页码,连接URLs
' 返回:字符串
' 时间:2004-08-29
' 作者:Guidy
' 版权:iXuEr Studio
'=========================================================
' Copyright (C) 2004-2006 114XP.CN All Rights Reserved.
' 官方网站:http://www.114xp.cn
' 技术论坛:http://bbs.114xp.cn
' 电子信箱:guidy@qq.com,guidy@psysch.com
'=========================================================

Dim DPS_Rs,DPS_Conn
Dim Sql
Dim Page
Dim DPS_i

'创建Recordset对象
Set DPS_Rs = Server.CreateObject("Adodb.Recordset")
'初始化Sql语句
Sql = SqlStr
DPS_Conn = Conn
'执行Sql
DPS_Rs.Open Sql,DPS_Conn,1,3
'初始化页面大小--每页显示数目
DPS_Rs.PageSize = DateNums
'初始化页码
Page = Clng(PageNums)
'如果页码小于1,或者没有选择页码,则强制转到第一页
If IsNull(Page) Or Page = "" Then Page = 1
If Page <= 1 then Page = 1
'如果页码大于最大值,则强制转到最后一页
If Page>=DPS_Rs.PageCount Then Page=DPS_Rs.PageCount
'如果页码不等于1,则跳转至指定页面读取数据
If Page <> 1 then
If (Page - 1) * DPS_Rs.Pagesize < DPS_Rs.RecordCount then
DPS_Rs.Move (Page - 1) * DPS_Rs.PageSize
End If
End If
Call iXuEr_Page_URLs(Page,URLs,DPS_Rs,"DPS_TP1","Page")
'数据显示表格头部
Call iXuEr_Page_DHead()
DPS_i = 0
Do While Not DPS_Rs.eof And DPS_i < DPS_Rs.Pagesize
'数据显示主体部分
Call iXuEr_Page_DBody(DPS_Rs)
DPS_i = DPS_i + 1
DPS_Rs.MoveNext
Loop
'数据显示表格尾部
Call iXuEr_Page_DTail()

Call iXuEr_Page_URLs(Page,URLs,DPS_Rs,"DPS_TP2","Page")
DPS_Rs.Close
Set DPS_Rs = Nothing
End Function
Function iXuEr_Page_URLs(Page,URLs,DPS_Rs,FormName,InPutName)
If URLs = "" Or IsNull(URLs) Then URLs = "?="
Response.Write("<table width='100%'><tr align=center><form onsubmit='return numericCheck(""" & FormName & """,""" & InPutName & """)' name=" & FormName & " method=post action=" & URLs & "><td>" & DPS_Rs.PageSize & "个/页&nbsp;&nbsp;&nbsp;页数:" & Page & "/" & DPS_Rs.PageCount & "&nbsp;&nbsp; 共" & DPS_Rs.recordcount & "个&nbsp;&nbsp;&nbsp;")
If Page <> 1 then
Response.Write ("[" & "<a href=""" & URLs & "&" & InPutName & "=1"" title=""返回到第一页"">首页</a>]")
Response.Write ("[" & "<a href=""" & URLs & "&" & InPutName & "=" & Page - 1 & """ title=""返回到" & Cstr(Page - 1) & "页"">上一页</a>] ")
else
Response.Write ("[首页] [上一页]")
End If
If Page <> DPS_Rs.PageCount then
Response.Write ("[" & "<a href=""" & URLs & "&" & InPutName & "=" & Page + 1 & """ title=""前进到" & Cstr(Page + 1) & "页"">下一页</a>] ")
Response.Write ("[" & "<a href=""" & URLs & "&" & InPutName & "=" & DPS_Rs.PageCount & """ title=""前进到最后一页"">尾页</a>] ")
else
Response.Write ("[下一页] [尾页]")
End If
Response.Write("&nbsp;&nbsp;<input name=" & InPutName & " type=text style=""text-align: center;"" id=" & InPutName & " value=" & Page & " size=6 maxlength=10 title=""请输入您想跳转到的页数"">&nbsp;<input name=topPage type=Submit value=跳页 title=""点击将跳转到您输入的页数"">")
Response.Write("</td></form></tr></table>")
End Function
%>
<script language="javascript1.2">
//#########################################################################################
//检测表单中的数据并只允许输入数字
function numericCheck(myform,myinput){
//设定要检查的表单对象名称
var nr1=eval("document."+myform+"."+myinput+".value;");
var flg=0;
var str="";
var spc=""
var arw="";
for (var i=0;i<nr1.length;i++){
var cmp="0123456789"
var tst=nr1.substring(i,i+1)
if (cmp.indexOf(tst)<0){
flg++;
tst=tst.replace(" ","[空格]")
str+="/n第"+(i+1)+"位的:"+tst;
spc+=tst;
arw+="^";
}
else{
arw+="_";
}
}
if (flg!=0){
if (spc.indexOf("[空格]")>-1) {
str+="/n────────────────────────/n注意:空格被禁用!";
}
alert("这里只接受数字,发现 " + flg + " 个不可接受的字符,分别是:/n━━━━━━━━━━━━━━━━━━━━━━━━"+str);
return false;
}
}
//检测表单中的数据并只允许输入数字结束

//#########################################################################################
</script>