Vbscript 用VB脚本实现经典ASP的分页

Vbscript 用VB脚本实现经典ASP的分页,vbscript,asp-classic,pagination,Vbscript,Asp Classic,Pagination,我在我的项目中使用ASP/VB脚本,但我不太了解经典ASP中的分页。我使用表和循环设计了datagrid格式。该表通过访问数据库来填充。因为我们有大量的数据要显示,所以我们需要分页 提前感谢设置页面大小 recordset.PageSize = 100 ' number of records per page 设置当前页面 recordset.AbsolutePage = nPage ' nPage being the page you want to jump to. 其他有用位: rec

我在我的项目中使用ASP/VB脚本,但我不太了解经典ASP中的分页。我使用表和循环设计了datagrid格式。该表通过访问数据库来填充。因为我们有大量的数据要显示,所以我们需要分页

提前感谢

设置页面大小

recordset.PageSize = 100 ' number of records per page
设置当前页面

recordset.AbsolutePage = nPage ' nPage being the page you want to jump to.
其他有用位:

recordset.RecordCount ' number of records returned
recordset.PageCount ' number of pages based on PageSize and RecordCount
这是基本信息。您仍然需要循环浏览适当数量的记录,并在返回页面时检查页码。

设置页面大小

recordset.PageSize = 100 ' number of records per page
设置当前页面

recordset.AbsolutePage = nPage ' nPage being the page you want to jump to.
其他有用位:

recordset.RecordCount ' number of records returned
recordset.PageCount ' number of pages based on PageSize and RecordCount

这是基本信息。您仍然需要循环浏览适当数量的记录,并在将页码传回页面时检查页码。

分页问题并非ASP classic或VBScript固有的问题。您首先需要定义要遵循的策略:

在客户端:
  • Ajax风格的分页(您可以使用类似jQuery的插件)
  • 链接分页:您的页面具有指向第1页、第2页等的链接
  • Infite滚动:这是一种现代的分页方式,通过ajax将更多结果添加到页面中
  • 在服务器中
  • 完整数据库结果检索并仅返回所请求的页面。这有时是必要的
  • 完整数据库检索但缓存结果,以便后续页面请求来自缓存,而不是数据库
  • 仅询问数据库所询问的页面(不同的技术取决于数据库引擎)

  • 分页问题并非ASP classic或VBScript固有的问题。您首先需要定义要遵循的策略:

    在客户端:
  • Ajax风格的分页(您可以使用类似jQuery的插件)
  • 链接分页:您的页面具有指向第1页、第2页等的链接
  • Infite滚动:这是一种现代的分页方式,通过ajax将更多结果添加到页面中
  • 在服务器中
  • 完整数据库结果检索并仅返回所请求的页面。这有时是必要的
  • 完整数据库检索但缓存结果,以便后续页面请求来自缓存,而不是数据库
  • 仅询问数据库所询问的页面(不同的技术取决于数据库引擎)

  • 有一个问题你需要注意。。。内置的ASP记录集将允许分页,但效率不高。整个结果集返回到浏览器,然后找到相应的页面并显示该数据

    这样想吧。。。您的结果集是一个有4个书架的书架。当你要第一页时,所有4个书架的书都会被退回。显示代码显示“好,现在只显示第1页”。如果你再问第二页。。。所有四个书架的书都被归还,然后显示代码显示“好的,给我第4页”

    因此,您应该寻找一种在服务器上、数据库内部进行的分页解决方案。这样,如果您请求50页结果中的第15页,数据库将只返回一个书架上的书籍

    这会让你走上正轨

    编辑:SQL分页的工作原理
  • 您必须为我们提供一个存储过程
  • 输入参数之一是要查看的页面
  • 存储过程在服务器上过滤结果
  • 以下是过程中发生的事情的基本概念:

    步骤1:
    创建存储整个结果集的临时表。我的偏好是在这个临时表中只存储两个值。名为RowId的标识种子值和结果数据的主键。(我是那些相信非感官身份种子钥匙的人之一)

    第二步:
    将select语句中的所有PKey值插入临时表

    第三步:
    根据输入页面参数确定StartRowId和EndRowId

    第4步:

    使用PKey上数据表的内部联接从临时表中选择。在where子句中,限制结果,使临时表的RowId介于StartRowId和EndRowId之间。确保按RowId订购。

    您需要注意一个问题。。。内置的ASP记录集将允许分页,但效率不高。整个结果集返回到浏览器,然后找到相应的页面并显示该数据

    这样想吧。。。您的结果集是一个有4个书架的书架。当你要第一页时,所有4个书架的书都会被退回。显示代码显示“好,现在只显示第1页”。如果你再问第二页。。。所有四个书架的书都被归还,然后显示代码显示“好的,给我第4页”

    因此,您应该寻找一种在服务器上、数据库内部进行的分页解决方案。这样,如果您请求50页结果中的第15页,数据库将只返回一个书架上的书籍

    这会让你走上正轨

    编辑:SQL分页的工作原理
  • 您必须为我们提供一个存储过程
  • 输入参数之一是要查看的页面
  • 存储过程在服务器上过滤结果
  • 以下是过程中发生的事情的基本概念:

    步骤1:
    创建存储整个结果集的临时表。我的偏好是在这个临时表中只存储两个值。名为RowId的标识种子值和结果数据的主键。(我是那些相信非感官身份种子钥匙的人之一)

    第二步:
    将select语句中的所有PKey值插入临时表

    第三步:
    根据输入页面参数确定StartRowId和EndRowId

    第4步:

    使用PKey上数据表的内部联接从临时表中选择。在where子句中,限制结果,使临时表的RowId介于StartRowId和EndRowId之间。确保按RowId排序。

    如果光标不支持recordcount/pagecount属性,可以将记录集放入数组中