<SCRIPT language=JavaScript><!-- function dspList(n){
var elmABlock= 10;//每页记录数量设置
var totElm = 100;//记录数量
var totBlock= Math.floor((totElm -1) / elmABlock)+1;//页个数
var cblock;
if(n==null){cblock=1;}
else{cblock=n;}
var seed;
var limit;
if(cblock < totBlock){seed= elmABlock * (cblock-1); limit = cblock*elmABlock -1}
else{seed=elmABlock * (cblock-1); limit= totElm-1;} if(totElm >0 ){
var list_num=0;
mmList.innerHTML='';
for (var i=seed; i <= limit; i++)
{
aaa='<font color=red>sdfsdfsdf</font>'+i+'<br/>'
mmList.innerHTML=mmList.innerHTML+aaa
}
}
else { mmList.innerHTML='<div align=center> http://www.killerj.tk </div>'; }
pageList.innerHTML=""
for(var j=1; j<=totBlock; j++){
page='<a href=javascript:dspList('+j+')>['+j+']<a> ';
pageList.innerHTML=pageList.innerHTML+page;
}
}
--></SCRIPT>
<body onload=dspList();this.focus()>
<DIV id=mmList></DIV>
<br/>
<SPAN id=pageList></span>
var elmABlock= 10;//每页记录数量设置
var totElm = 100;//记录数量
var totBlock= Math.floor((totElm -1) / elmABlock)+1;//页个数
var cblock;
if(n==null){cblock=1;}
else{cblock=n;}
var seed;
var limit;
if(cblock < totBlock){seed= elmABlock * (cblock-1); limit = cblock*elmABlock -1}
else{seed=elmABlock * (cblock-1); limit= totElm-1;} if(totElm >0 ){
var list_num=0;
mmList.innerHTML='';
for (var i=seed; i <= limit; i++)
{
aaa='<font color=red>sdfsdfsdf</font>'+i+'<br/>'
mmList.innerHTML=mmList.innerHTML+aaa
}
}
else { mmList.innerHTML='<div align=center> http://www.killerj.tk </div>'; }
pageList.innerHTML=""
for(var j=1; j<=totBlock; j++){
page='<a href=javascript:dspList('+j+')>['+j+']<a> ';
pageList.innerHTML=pageList.innerHTML+page;
}
}
--></SCRIPT>
<body onload=dspList();this.focus()>
<DIV id=mmList></DIV>
<br/>
<SPAN id=pageList></span>
对于表中主键或标识列的情况,直接从原表取数查询,其它情况使用临时表的方法
如果视图或查询结果中有主键,不推荐此方法
如果使用查询语句,而且查询语句使用了order by,则查询语句必须包含top 语句
--感谢csdn.net邹建 --*//*--调用示例
exec p_show '地区资料' exec p_show 'select top 100 percent * from 地区资料 order by 地区名称',5,3,'地区编号,地区名称,助记码'
--*/
CREATE Proc p_show
@QueryStr nvarchar(4000), --表名、视图名、查询语句
@PageSize int=20, --每页的大小(行数)
@PageCurrent int=1, --要显示的页
@FdShow nvarchar (4000)='', --要显示的字段列表,如果查询结果不需要标识字段,需要指定此值,且不包含标识字段
@FdOrder nvarchar (1000)='' --排序字段列表
as
set nocount on
declare @FdName nvarchar(250) --表中的主键或表、临时表中的标识列名
,@Id1 varchar(20),@Id2 varchar(20) --开始和结束的记录号
,@Obj_ID int --对象ID
--表中有复合主键的处理
declare @strfd nvarchar(2000) --复合主键列表
,@strjoin nvarchar(4000) --连接字段
,@strwhere nvarchar(2000) --查询条件
select @Obj_ID=object_id(@QueryStr)
,@FdShow=case isnull(@FdShow,'') when '' then ' *' else ' '+@FdShow end
,@FdOrder=case isnull(@FdOrder,'') when '' then '' else ' order by '+@FdOrder end
,@QueryStr=case when @Obj_ID is not null then ' '+@QueryStr else ' ('+@QueryStr+') a' end--如果显示第一页,可以直接用top来完成
if @PageCurrent=1
begin
select @Id1=cast(@PageSize as varchar(20))
exec('select top '+@Id1+@FdShow+' from '+@QueryStr+@FdOrder)
return
end--如果是表,则检查表中是否有标识更或主键
if @Obj_ID is not null and objectproperty(@Obj_ID,'IsTable')=1
begin
select @Id1=cast(@PageSize as varchar(20))
,@Id2=cast((@PageCurrent-1)*@PageSize as varchar(20)) select @FdName=name from syscolumns where id=@Obj_ID and status=0x80
if @@rowcount=0 --如果表中无标识列,则检查表中是否有主键
begin
if not exists(select 1 from sysobjects where parent_obj=@Obj_ID and xtype='PK')
goto lbusetemp --如果表中无主键,则用临时表处理 select @FdName=name from syscolumns where id=@Obj_ID and colid in(
select colid from sysindexkeys where @Obj_ID=id and indid in(
select indid from sysindexes where @Obj_ID=id and name in(
select name from sysobjects where xtype='PK' and parent_obj=@Obj_ID
)))
if @@rowcount>1 --检查表中的主键是否为复合主键
begin
select @strfd='',@strjoin='',@strwhere=''
select @strfd=@strfd+',['+name+']'
,@strjoin=@strjoin+' and a.['+name+']=b.['+name+']'
,@strwhere=@strwhere+' and b.['+name+'] is null'
from syscolumns where id=@Obj_ID and colid in(
select colid from sysindexkeys where @Obj_ID=id and indid in(
select indid from sysindexes where @Obj_ID=id and name in(
select name from sysobjects where xtype='PK' and parent_obj=@Obj_ID
)))
select @strfd=substring(@strfd,2,2000)
,@strjoin=substring(@strjoin,5,4000)
,@strwhere=substring(@strwhere,5,4000)
goto lbusepk
end
end
end
else
goto lbusetemp/*--使用标识列或主键为单一字段的处理方法--*/
lbuseidentity:
exec('select top '+@Id1+@FdShow+' from '+@QueryStr
+' where '+@FdName+' not in(select top '
+@Id2+' '+@FdName+' from '+@QueryStr+@FdOrder
+')'+@FdOrder
)
return/*--表中有复合主键的处理方法--*/
lbusepk:
exec('select '+@FdShow+' from(select top '+@Id1+' a.* from
(select top 100 percent * from '+@QueryStr+@FdOrder+') a
left join (select top '+@Id2+' '+@strfd+'
from '+@QueryStr+@FdOrder+') b on '+@strjoin+'
where '+@strwhere+') a'
)
return/*--用临时表处理的方法--*/
lbusetemp:
select @FdName='[ID_'+cast(newid() as varchar(40))+']'
,@Id1=cast(@PageSize*(@PageCurrent-1) as varchar(20))
,@Id2=cast(@PageSize*@PageCurrent-1 as varchar(20))exec('select '+@FdName+'=identity(int,0,1),'+@FdShow+'
into #tb from'+@QueryStr+@FdOrder+'
select '+@FdShow+' from #tb where '+@FdName+' between '
+@Id1+' and '+@Id2
)
GO
非常酷,http://qiangdeng.go.nease.net/htc.rar
我决定自己写一个,迟几天结帖,散分拉
<%
function OpenDB(sdbname)
{
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var oConn = OpenDB("file.mdb");
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-12 8:18
*--------------- OpenDB(sdbname) -----------------
*/
var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
var conn = Server.CreateObject("ADODB.Connection");
conn.Open(connstr);
return conn;
}
var oConn = OpenDB("data.mdb");
var rsData = oConn.Execute("select * from articledata where id=1");
var records = rsData("content").Value; //内容
var recordsTitle = rsData("title").Value; //标题
var rs = new Object();
rs.PageSize = 100; //每页字数.
rs.PageCount = parseInt(records.length/rs.PageSize)+1 //总页数.
page = Request("page");
if(String(page)=="undefined")
{
page = 1;
rs.AbsolutePage = 1; //当前页数
}
else
{
rs.AbsolutePage = page;
}
Response.Write("<table>");
Response.Write("<tr><td>"+recordsTitle+"</td><tr>");
Response.Write("<tr><td>"+records.substr(((rs.AbsolutePage-1)*rs.PageSize),rs.PageSize) + "</td>");
Response.Write("</table>");
Response.Write("<table><tr>");
for(var i=1;i<=rs.PageCount;i++)
{
Response.Write("<td>")
if(i==page)Response.Write("<b>");
Response.Write("<a href='ContentPage.asp?page=" + i + "'>" + i + "</a>");
if(i==page)Response.Write("</b>");
Response.Write("</td>")
}
Response.Write("</tr><table>");
%>数据库data.mdb
表articledata
id自动编号
title文本
content备注
var arti=" 该页无法显示 \n您正在查看的页目前不可用。Web 站点可能遇到技术困难,或者您需要调整您的浏览器设置。 \n\n--------------------------------------------------------------------------------\n\n请尝试以下操作:\n\n单击刷新按钮,或以后再试。\n\n如果在地址栏中键入地址,请确保其拼写正确。\n\n要查看连接设置,请单击工具菜单,然后单击 Internet 选项。在连接选项卡上,单击局域网设置。 这些设置应该与您局域网(LAN)管理员或 Internet 服务提供商(ISP)所提供的相匹配。 \n如果您的网络管理员允许,Microsoft Windows 可以检查您的网络并自动查找网络连接设置。\n如果您希望 Windows 进行尝试并查找,请单击检测网络设置。 \n某些站点要求 128-位的连接安全性。单击帮助菜单,然后单击关于 Internet Explorer 可以查看您所安装的安全性长度。 \n如果您要到达某安全站点,请确保您的安全设置能够支持。请单击工具菜单,然后单击 Internet 选项。在高级选项卡上,滚动到安全部分,复选 SSL 2.0、SSL 3.0、TLS 1.0、PCT 1.0 设置。 \n单击后退按钮,尝试其他链接。 \n\n\n\n找不到服务器或发生 DNS 错误\nInternet Explorer \n 该页无法显示 \n您正在查看的页目前不可用。Web 站点可能遇到技术困难,或者您需要调整您的浏览器设置。 \n\n--------------------------------------------------------------------------------\n\n请尝试以下操作:\n\n单击刷新按钮,或以后再试。\n\n如果在地址栏中键入地址,请确保其拼写正确。\n\n要查看连接设置,请单击工具菜单,然后单击 Internet 选项。在连接选项卡上,单击局域网设置。 这些设置应该与您局域网(LAN)管理员或 Internet 服务提供商(ISP)所提供的相匹配。 \n如果您的网络管理员允许,Microsoft Windows 可以检查您的网络并自动查找网络连接设置。\n如果您希望 Windows 进行尝试并查找,请单击检测网络设置。 \n某些站点要求 128-位的连接安全性。单击帮助菜单,然后单击关于 Internet Explorer 可以查看您所安装的安全性长度。 \n如果您要到达某安全站点,请确保您的安全设置能够支持。请单击工具菜单,然后单击 Internet 选项。在高级选项卡上,滚动到安全部分,复选 SSL 2.0、SSL 3.0、TLS 1.0、PCT 1.0 设置。 \n单击后退按钮,尝试其他链接。 \n\n\n\n找不到服务器或发生 DNS 错误\nInternet Explorer \n";
//arti为示范文章,可以从数据库中取得,但是要注意把回车换为\n,"换为\",以使此句符合javascript语法
// ///////////////////////说明信息-开始/ ///////////// //////////////////////////
//
// 文_章_分_页 算法:
// 作者:庄永盛(紫药水),中山大学信息管理系2001级
// 版本:1.0
// 完成时间:2004年7月20日
// email:[email protected]; [email protected]
// 说明:
// 1、mystlen函数照搬了“海娃@[email protected]@无忧视窗@http://www.51windows.net”的字符串真实长度计算的代码,其余为本人自己所写
// 2、你可以在你的网页中使用以下代码,但是必须保留本说明信息
// 3、有任何建议欢迎email联系
//
// //////////////////////////说明信息-结束////// / ///////////////////////////////function mystlen(str){var arr=str.match(/[^\x00-\xff]/ig);return str.length+(arr==null?0:arr.length);}
function mysleft (strin, num, mode){
var pstart,i,strout;
if (mystlen(strin)<=num) return strin;
else{
pstart=parseInt(num/2);
do{
strout=strin.substr(0,pstart++);
}while(mystlen(strout)<num);
return strout;
}
}
wpr=90; //90个字每行
rpp=25; //15行每页
totalrows=0;
var myrows = new Array();
var curpara;paras=arti.split("\n");
parasl=paras.length;for (tmpi=0;tmpi<=parasl-1;tmpi++){
curpara=" " + paras[tmpi];
while(curpara.length>0){
myrows[totalrows]=mysleft(curpara,wpr,true);
curpara=curpara.substr(myrows[totalrows].length);
totalrows++;
}
}function printpage(n){
for(tmpi=0;tmpi<wpr;tmpi++)document.write ("-");
document.write ("<br>");
document.write ("第" + n + "页");
document.write ("<br>");
for(tmpi=0;tmpi<wpr;tmpi++)document.write ("-");
document.write ("<br>");
strout=""
for(tmpi=(n-1)*rpp;tmpi<n*rpp;tmpi++){
if(myrows[tmpi])strout=strout+myrows[tmpi]+"\n";
}
strout=strout.replace(/&/g,"&");
strout=strout.replace(/</g,"<");
strout=strout.replace(/>/g,">");
strout=strout.replace(/\"/g,""");
strout=strout.replace(/\n/g,"<br>");
strout=strout.replace(/ /g," ");
strout=strout.replace(/ /g," ");
document.write (strout);
}totalpages=totalrows/rpp;for(i=1;i<totalpages+1;i++)printpage(i);
document.write ("<br>");
for(tmpi=0;tmpi<wpr;tmpi++)document.write ("-");
document.write ("<br>");
document.write ("结束");
document.write ("<br>");
for(tmpi=0;tmpi<wpr;tmpi++)document.write ("-");
</script>