用VB脚本在经典ASP中的分页

时间:2011-11-17 11:11:27

标签: vbscript asp-classic pagination

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

提前致谢

3 个答案:

答案 0 :(得分:1)

分页问题本质上不是ASP classic或VBScript。您首先需要定义要遵循的策略:

在客户端:

  1. Ajax样式分页(您可以使用jQuery插件,如SlickGrid
  2. 链接分页:您的页面包含指向第1页,第2页等的链接
  3. 无限滚动:这是一种现代的分页方式,通过ajax将更多结果添加到页面中
  4. 在服务器

    1. 完整数据库结果只检索并返回所询问的页面。这有时是必要的。
    2. 完整数据库检索但缓存结果,以便后续页面请求来自缓存,而不是数据库
    3. 只询问数据库询问的页面(不同的技术取决于数据库引擎)

答案 1 :(得分:1)

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

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

因此,您应该在数据库内部查找发生在服务器上的分页解决方案。这样,如果您要求50页结果的第15页,数据库将只返回一个书架。

google query应该让你走上正轨。

编辑:SQL分页的工作原理

  1. 您必须使用存储过程
  2. 其中一个输入参数是要查看的页面
  3. 存储过程在服务器上过滤结果
  4. 以下是proc中发生的事情的基本概念:

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

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

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

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

答案 2 :(得分:0)

设置页面大小

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

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