转载gridview分页插件

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值