在ASP项目中,公共翻页模块是一个非常重要的组件,它能够提高代码的复用性和模块化程度,本文将详细介绍ASP项目中的公共翻页模块的设计、实现以及调用方法,并通过表格和示例代码进行说明。
### 一、设计方法
#### 1. 模块名称与文件名
**模块名称**:公共翻页模块
**文件名**:TurnPage.asp
#### 2. 传入参数
**Rs_tmp**:记录集
**PageSize**:每页显示的记录条数
#### 3. 输出功能
记录集翻页显示功能
### 二、实现步骤
#### 1. 定义变量
```asp
Sub TurnPage(ByRef Rs_tmp, PageSize)
Dim TotalPage '总页数
Dim PageNo '当前显示的是第几页
Dim RecordCount '总记录条数
```
#### 2. 设置记录集的分页属性
```asp
Rs_tmp.PageSize = PageSize
RecordCount = Rs_tmp.RecordCount
TotalPage = INT(RecordCount / PageSize * -1) * -1
PageNo = Request.QueryString("PageNo")
```
#### 3. 处理直接输入页码的情况
```asp
If Request.Form("PageNo")<> "" Then
PageNo = Request.Form("PageNo")
End If
If PageNo = "" Then
PageNo = 1
End If
If RecordCount< 0 Then
Rs_tmp.AbsolutePage = PageNo
End If
```
#### 4. 获取当前文件名,使每次翻页都在当前页面进行
```asp
Dim fileName, postion
fileName = Request.ServerVariables("script_name")
postion = InstrRev(fileName, "/") + 1
fileName = Mid(fileName, postion)
```
#### 5. 生成翻页导航链接
```asp
Response.Write "
总页数:" & TotalPage & "页" & vbCrLf
Response.Write "当前第" & PageNo & "页" & vbCrLf Response.Write " | " & vbCrLf
If RecordCount = 0 Or TotalPage = 1 Then Response.Write "首页|前页|后页|末页" Else If PageNo<= 1 Then Response.Write "首页|" Else Response.Write "首页|" End If If PageNo > 1 Then Response.Write "前页|" End If If PageNo< TotalPage Then Response.Write "后页|" End If Response.Write "末页" End If Response.Write " | 转到第" & vbCrLf
If TotalPage = 1 Then Response.Write "" Else Response.Write "" End If Response.Write "页 |
" & vbCrLf
End Sub
```
### 三、调用方法
#### 1. 包含翻页模块文件
在程序开始或要使用翻页的地方包含翻页模块文件:
```asp
```
#### 2. 定义变量并调用翻页过程
定义变量`RowCount`为每页显示的记录条数,然后调用翻页过程:
```asp
Dim RowCount
RowCount = 10 '每页显示的记录条数
Call TurnPage(Rs_News, RowCount)
```
#### 3. 循环输出记录集并控制行数
在`Do While`循环中输出记录集,并在条件中加上`RowCount > 0`,循环结束后减少`RowCount`的值:
```asp
If Not Rs_News.EOF Then
Do While Not Rs_News.EOF And RowCount > 0
'输出记录集内容...
RowCount = RowCount 1
Rs_News.MoveNext
Loop
End If
```
### 四、调用范例
以下是一个具体的调用范例,展示了如何在ASP文件中使用公共翻页模块:
```asp
文件名:News.asp
<%
Dim Conn, Rs_News
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "cpm", "cpm", "cpm"
Dim Sql
Sql = "Select * from News"
Set Rs_News = Server.CreateObject("ADODB.Recordset")
Rs_News.Open Sql, Conn, 1, 3 '获取的记录集
'公共翻页模块开始%>
<%
Dim RowCount
RowCount = 10 '每页显示的记录条数
Call TurnPage(Rs_News, RowCount)
'公共翻页模块结束%>
新闻编号 | 发布日期 | |
<%=Rs_News("ID")%> | <%=Rs_News("Name")%> | <%=Rs_News("Date")%> |