Public Class Pager
Private Totalrs As Int32
Private Pageline As Integer
Private Cpage As Integer
Private URLstring As String
'*******************************************************************
'总记录数
WriteOnly Property Allrs() As Int32
Set(ByVal Value As Int32)
Totalrs = Value
End Set
End Property
'*******************************************************************
'每页大小
WriteOnly Property Pagesize() As Integer
Set(ByVal Value As Integer)
Pageline = Value
End Set
End Property
'*******************************************************************
'当前页
WriteOnly Property Currentpage() As Integer
Set(ByVal Value As Integer)
Cpage = Value
End Set
End Property
'*******************************************************************
'计算当前完整URL
Friend Sub Geturl(ByVal Request As HttpRequest)
Dim i As String
Dim URL As New System.Text.StringBuilder
If LCase(Request.ServerVariables("HTTPS")) = "off" Then
URL.Append("http://")
Else
URL.Append("https://")
End If
URL.Append(Request.ServerVariables("SERVER_NAME"))
If CInt(Request.ServerVariables("SERVER_PORT")) <> 80 Then
URL.Append(":" & Request.ServerVariables("SERVER_PORT"))
End If
URL.Append(Request.ServerVariables("URL"))
If Request.QueryString.Count > 0 Then
URL.Append("?")
For Each i In Request.QueryString
URL.Append(i & "=")
URL.Append(Request.QueryString(i) & "&")
Next
End If
URL.Replace("page=" & Request.QueryString("page") & "", "")
If Request.QueryString.Count = 0 Then
URL.Append("?")
End If
If Right(URL.ToString, 1) = "&" Then
URL.Remove(URL.Length - 1, 1)
End If
If Request.QueryString("page") = "" Then
URL.Append("&")
End If
URLstring = URL.ToString
URL = Nothing
End Sub
'*******************************************************************
'生成页码
Friend Function Pageindex() As String
Dim Startpage As Integer = Cpage - 5
Dim Endpage As Integer = Cpage + 5
Dim Pagecount As Integer = CInt(Totalrs / Pageline)
Dim Pagestring As New System.Text.StringBuilder
Dim i As Integer
If Cpage = 0 Then Cpage = 1
If Cpage <= 5 And Pagecount >= 9 Then
Startpage = 1
Endpage = 9
End If
If Pagecount - Cpage <= 5 And Pagecount >= 9 Then
Startpage = Pagecount - 9
Endpage = Pagecount
End If
If Pagecount < 9 Then
Startpage = 1
Endpage = Pagecount
End If
Pagestring.Append("<b>总记录数:</b>" & Totalrs & " - <b>当前页:</b>" & Cpage & "/" & Pagecount & " - <b>页码:</b> <a href=""" & URLstring & "page=1"">首页</a> [")
For i = Startpage To Endpage
Pagestring.Append(" <a href=""" & URLstring & "page=" & i & """>" & i & "</a> ")
Next
Pagestring.Append("] <a href=""" & URLstring & "page=" & Pagecount & """>尾页</a>")
Return Pagestring.ToString
End Function
End Class
用法:
Dim Con As HttpContext = HttpContext.Current
CurrentPage = CInt(Request.QueryString("page"))
If CurrentPage = 0 Then CurrentPage = 1
RSlist.DataSource = CreateDS()
RSlist.DataBind()
Tpage.Allrs = Allrs
Tpage.Pagesize = 20
Tpage.Currentpage = CurrentPage
Tpage.Geturl(Con.Request)
Thepage.Text = Tpage.Pageindex
Tpage = Nothing