ASP.NET处理数据分页(2)
来源:岁月联盟
时间:2005-07-12
Response.Write ( ' <p > 数据导航: ' )
nPageEnd = nPage + 3
If nPageEnd > nPageCount
nPageEnd = nPageCount
End If
For i = 1 To nPageEnd
If i = nPage Then
Response.Write ( ' <b > ' & i.ToString ( ) & ' </b > ' )
Else
Response.Write ( '<A HREF = ''' & SCRIPT_NAME & _
'?Page=' & ( i ).ToString ( ) & _
''' > ' & i.ToString ( ) & '</A > ' )
End If
Next
If nPageEnd < nPageCount Then
Response.Write ( '<A HREF = ''' & SCRIPT_NAME & _
'?Page=' & ( nPageEnd + 1 ).ToString ( ) & _
''' >更多...</A > ' )
End If
五. 第二种分页浏览数据记录的完整源程序代码(no2.aspx):
no2.aspx和no1.aspx在程序设计的思想和方法上大致相同,下面是no2.aspx的源程序,具体如下:
<% @ Page Language = 'VB' %>
<% @ Import Namespace = 'System.Data' %>
<% @ Import Namespace = 'System.Data.OleDb' %>
<script runat = 'server' >
Const Record_Per_Page As Short = 5 '定义每一页显示的记录数
Private Script_Name As String
Sub Page_Load ( Source As Object , e As EventArgs )
Script_Name = GetPageName ( )
'第二种方式来分页显示数据
ShowRecords ( )
End Sub
'得到起始浏览超链接字符串
Function GetPageName ( ) As String
Dim Str As String
Dim Pos As Short
Str = Request.ServerVariables ( 'Script_Name' ).Trim ( )
Pos = Str.LastIndexOf ( '/' )
If Pos >= 0 Then
Return Str.SubString ( Pos + 1 )
Else
Return Str
End If
End Function
Private Sub ShowRecords ( )
Dim strConn As String '定义数据连接字符串
Dim SQL As String '定义SQL语句
Dim odConn As OleDbConnection
Dim odAdapt As OleDbDataAdapter
Dim DS As DataSet '创建DataSet对象
Dim DT As DataTable '创建DataTable对象
Dim nRecCount As Integer '保存记录总数
Dim nPageCount As Integer '保存总共的数据页面数目
Dim nPage As Integer '存放要浏览当前数据页面号
Dim nStart As Integer '存放当前页面的起始记录序号
Dim nEnd As Integer '存放当前页面的终止记录序号
Dim nPageEnd As Integer '存储当前页面的最后一面的序号
Dim i As Integer
'确认要浏览的页面序号
nPage = Convert.ToInt32 ( Request.QueryString ( 'Page' ) )
SQL = 'SELECT * FROM tblItem '
'创建数据连接字符串
strConn = ' Provider = Microsoft.Jet.OLEDB.4.0 ; ' & _
' Data Source = ' & Server.MapPath ( 'data.mdb' ) & ' ; ' & _
' User ID = ; Password = ; '
Try
'得到数据记录总数
odConn = New OleDbConnection ( strConn )
odAdapt = New OleDbDataAdapter ( SQL , odConn )
DS = New DataSet
odAdapt.Fill ( DS )
DT = DS.Tables ( 0 )
nRecCount = DT.Rows.Count
Catch e As Exception
Response.Write('错误信息: <b >' & e.Message & '</b > <p > ' )
nRecCount = 0
End Try
If nRecCount > 0 Then
' 确定数据记录要显示的页面数
nPageCount = nRecCount / Record_Per_Page
If nRecCount Mod Record_Per_Page > 0 Then
nPageCount += 1
End If
'确认浏览命令中的页面参数是否越界,如果越界则重置页面序号
If nPage < 1 Then
nPage = 1
End If
If nPage > nPageCount Then
nPage = nPageCount
End If
Response.Write ( '总共有数据记录' & nRecCount.ToString ( ) & ' 条' & '。<br >' )
Response.Write(' <p > <b >第二种分页显示为:</b > <p > ' )
'确认当前页面的开始记录和终止记录
nStart = Record_Per_Page * ( nPage - 1 )
nEnd = nStart + Record_Per_Page - 1
If nEnd > nRecCount - 1 Then
nEnd = nRecCount - 1
End If
'在屏幕中输出记录
For i = nStart To nEnd
Response.Write ( DT.Rows ( i ) ( 'ItemName' ) & ' <br > ' )
Next
End If
Response.Write ( ' <p > 数据导航: ' )
nPageEnd = nPage + 3
If nPageEnd > nPageCount
nPageEnd = nPageCount
End If
For i = 1 To nPageEnd
If i = nPage Then
Response.Write ( ' <b > ' & i.ToString ( ) & ' </b > ' )
Else
Response.Write ( '<A HREF = ''' & SCRIPT_NAME & _
'?Page=' & ( i ).ToString ( ) & _
''' > ' & i.ToString ( ) & '</A > ' )
End If
Next
If nPageEnd < nPageCount Then
Response.Write ( '<A HREF = ''' & SCRIPT_NAME & _
'?Page=' & ( nPageEnd + 1 ).ToString ( ) & _
''' >更多...</A > ' )
End If
End Sub
</script >
本文介绍的这二种分页浏览记录类型虽然采用的数据库都是本地数据库,但对其他类型的数据库也是一样适用的,这只需要修改一下数据连接字符串就可以实现了,譬如如果采用了SQL Server数据库。此SQL Server数据库服务器是'Server1',数据库是'Data',用户名为缺省的'sa',没有设定密码。只需要把上面二段程序中的字符串'strConn'变换成:
strConn = 'Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = Data ; Data Source = server1 '
就可以实现了。
六. 总结:
本文介绍的二种分页浏览数据记录方法在ASP.NET数据库编程方面是非常有用的,因为在数据处理方面,分页显示记录比起其他的一些处理,譬如:数据修改、删除等都要难些。希望上面的这些内容对你利用ASP.NET开发数据库程序有所帮助。
上一篇:ASP.NET处理数据分页(1)