ASP.NET处理数据分页(2)

发表于:2007-06-30来源:作者:点击数: 标签:
四. 第二种分页浏览数据记录的关键步骤以及实现方法: 其实这二种分页方法在程序设计中是大同小异的,在第二种方法中,其前面的关键步骤中和第一种分页几乎相同,也是要得到浏览数据记录的总数,设定每一页要显示的数据记录个数,计算出总共有多少数据页面等
四. 第二种分页浏览数据记录的关键步骤以及实现方法: 其实这二种分页方法在程序设计中是大同小异的,在第二种方法中,其前面的关键步骤中和第一种分页几乎相同,也是要得到浏览数据记录的总数,设定每一页要显示的数据记录个数,计算出总共有多少数据页面等等。这些步骤的实现方法可以参考第一种方法。第二种分页方法和第一种分页方法的主要区别在于数据导航的实现方法上。下列代码功能是实现第二种分页方法数据导航:  

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开发数据库程序有所帮助。

原文转自:http://www.ltesting.net