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

解决方案 »

  1.   

    /*--实现分页的通用存储过程 显示指定表、视图、查询结果的第X页
    对于表中主键或标识列的情况,直接从原表取数查询,其它情况使用临时表的方法
    如果视图或查询结果中有主键,不推荐此方法
    如果使用查询语句,而且查询语句使用了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
      

  2.   

    超级Grid
    非常酷,http://qiangdeng.go.nease.net/htc.rar
      

  3.   

    大笨狼给的不是javascript啊
    我决定自己写一个,迟几天结帖,散分拉
      

  4.   

    ContentPage.asp<% @Language="JavaScript" %>
    <%
    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备注
      

  5.   

    今天花了一天时间,终于弄出来了,散分拉,大家快来<script>
    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,"&amp;");
     strout=strout.replace(/</g,"&lt;");
     strout=strout.replace(/>/g,"&gt;");
     strout=strout.replace(/\"/g,"&quot;");
     strout=strout.replace(/\n/g,"<br>");
     strout=strout.replace(/  /g," ");
     strout=strout.replace(/ /g,"&nbsp;");
     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> 
      

  6.   

    前一页、后一页的功能,只要记住当前页curpage,调用printpage(curpage-1)、printpage(curpage+1)就可以了