Imports Microsoft.VisualBasic
Imports System
Imports System.Web
Imports System.data
Imports System.Data.SqlClient
Imports System.Math
Imports System.Web.HttpContext
'分页组件
Public Class SyyPage
Inherits System.Web.UI.Page
Public conn As Data.SqlClient.SqlConnection
Public Table As String
Public Fields As String
Public PageSize As Int32
Public Pkey As String
Public LocalPage As String
Public Sort As String
Public SortBy As String
Public Filter As String
Public TotalCount As Int32
Public PageCount As Int32
Public CurrentPage As Int32
Public PageList As Int32
Private Sql As String
Private PageFrom As Int32
Private PageEnd As Int32
Private iPageList As Int32
Sub startpage() '初始化翻页,计算总记录数、页数、当前页等
If PageList = 0 Then
PageList = 10
End If
If PageSize = 0 Then
PageSize = 20
End If
'获取总记录数
Sql = "select count(" & Pkey & ") from " & Table & " where 1=1 " & Filter
Dim mycmd As SqlCommand
mycmd = New SqlCommand(Sql, conn)
TotalCount = mycmd.ExecuteScalar
PageCount = Abs(Int(0 - (TotalCount / PageSize)))
If LocalPage = "" Then
LocalPage = "?"
Else
LocalPage = "?" & LocalPage & "&"
End If
CurrentPage = HttpContext.Current.Request.QueryString("page")
Dim pageno As Int32
If HttpContext.Current.Request.Params("pageno") <> "" Then
pageno = HttpContext.Current.Request.Params("pageno")
End If
If pageno <> 0 Then '获取表单提交的页码
CurrentPage = pageno
HttpContext.Current.Response.Redirect(HttpContext.Current.Request.CurrentExecutionFilePath.ToString() & LocalPage & "Page=" & CurrentPage)
End If
If IsNumeric(CurrentPage) = True And IsNothing(CurrentPage) = False Then
CurrentPage = Int(CurrentPage)
Else
CurrentPage = 1
End If
If (CurrentPage < 1 Or CurrentPage > PageCount) Then
CurrentPage = 1
End If
If Sort = "" Or Sort <> "asc" Then '缺省设置排序为逆序
Sort = "desc"
End If
Dim pMod
pMod = CurrentPage Mod PageList
If pMod = 0 Then
PageFrom = CurrentPage - PageList + 1
Else
PageFrom = CurrentPage - pMod + 1
End If
PageEnd = PageFrom + (PageList - 1)
If PageEnd >= PageCount Then
PageEnd = PageCount
End If
End Sub
Function getpager() As String '翻页部分的html代码
Dim pager As String
pager = "<div style='text-align:left;' class='turnpage'>共" & TotalCount & "个,第" & CurrentPage & "页/共" & PageCount & "页," & PageSize & "个/页 "
If PageFrom > PageList Then
pager = pager & "<a href='" & LocalPage & "page=1' title='首页'><font face=webdings>9</font></a> <a href='" & LocalPage & "page=" & (PageFrom - 1) & "' title=前" & PageList & "页><font face=webdings>7</font></a> "
End If
For iPageList = PageFrom To PageEnd
If CurrentPage = iPageList Then
pager = pager & "<span style='font-weight:bold;color:red;'>" & iPageList & "</span> "
Else
pager = pager & "<a href='" & LocalPage & "page=" & iPageList & "' style=text-decoration:underline;>" & iPageList & "</a> "
End If
Next
If PageEnd < PageCount Then
pager = pager & "<a href='" & LocalPage & "page=" & (PageEnd + 1) & "' title='后" & PageList & "页'><font face=webdings>8</font></a> <a href='" & LocalPage & "page=" & PageCount & "><font face=webdings title=尾页>:</font></a>"
End If
pager = pager & "<input type='text' name='pageno' style='width:20px;margin:0px 5px 0px 5px;height:18px;'>页 "
pager = pager & "<input type='submit' style='width:35px;height:18px;border:1px solid outset;' value='Go'>"
pager = pager & "</div>"
Return pager
End Function
Function getdata() As String '此页的数据记录
Select Case CurrentPage
Case 1
If Sort = "desc" Then
If SortBy = "" Then SortBy = "order by " & Pkey & " desc"
Sql = "select Top " & PageSize & " " & Fields & " from " & Table & " where 1=1 " & Filter & SortBy
Else
Sql = "select Top " & PageSize & " " & Fields & " from " & Table & " where 1=1 " & Filter & SortBy
End If
Case Else
If Sort = "desc" Then
If SortBy = "" Then SortBy = "order by " & Pkey & " desc"
Sql = "select Top " & PageSize & " " & Fields & " from " & Table & " where ( " & Pkey & "<(select min(" & Pkey & ") from (select Top " & PageSize * (CurrentPage - 1) & " " & Pkey & " from " & Table & " where 1=1 " & Filter & SortBy & ") as t)) " & Filter & SortBy
Else
Sql = "select Top " & PageSize & " " & Fields & " from " & Table & " where ( " & Pkey & ">(select max(" & Pkey & ") from (select Top " & PageSize * (CurrentPage - 1) & " " & Pkey & " from " & Table & " where 1=1 " & Filter & SortBy & ") as t)) " & Filter & SortBy
End If
End Select
Return Sql
End Function
End Class
'前台参数调用
conn = New SqlConnection(ConfigurationManager.AppSettings("connection"))
conn.Open()
thispage.conn = conn
thispage.Table = "Info_AcSub"
thispage.Fields = "*"
thispage.Pkey = "AcSub_id"
thispage.Filter = Str1
thispage.Sort = "asc"
thispage.SortBy = "order by AcSub_Code"
thispage.LocalPage = "cmd=" & Request.QueryString("cmd") & lpage & ""
thispage.PageSize = 10 '可以不设置,缺省值是20
thispage.PageList = 10 '可以不设置,缺省值是10
thispage.startpage()
turnpage.Controls.Add(New LiteralControl(thispage.getpager))
cmd = New SqlCommand(thispage.getdata(), conn)
dataR = cmd.ExecuteReader()
If dataR.Read() Then
dataR.Close()
dtcmd = New SqlDataAdapter(thispage.getdata(), conn)
dtcmd.Fill(dt)
GridView1.DataSource = dt
GridView1.DataBind()
End If
conn.Close()