当前位置:编程学习 > C#/ASP.NET >>

GridView 分页

GridView分页功能,应该怎样实现?

每页十条记录,在GridView下面有一排页码“1,2,3,4,5,6,7,8,9,10”和“向前、向后、第一页、最后一页”的按钮。点击相应的页码,显示相应的页码内的内容。

怎么实现比较好?求思路或源码实例。。。 --------------------编程问答-------------------- 用AspPager,网上查查 --------------------编程问答-------------------- 参考
http://dotnet.aspx.cc/Exam/GridViewMultiSelect.aspx

代码
http://dotnet.aspx.cc/file/Cross-Pages-Checked-GridView.aspx --------------------编程问答-------------------- 直接启用分页
好的分页界面有插件,可以百度一下 --------------------编程问答-------------------- asp.net自带分页工具!启用分页就可以了! --------------------编程问答-------------------- AspNetPager

网上很多资料 --------------------编程问答-------------------- AspNetPager 这个不错  怎么用它百度一下 --------------------编程问答-------------------- 设置GridView的AllowPaging为true,设置PageSize属性为20,双击PageIndexChanging事件,代码如下:
GridView1.PageIndex=e.SelectedPageIndex;
//重新绑定GridView1的数据源(比如DataTable) --------------------编程问答-------------------- 一般都是自己写 --------------------编程问答-------------------- gridview自带有分页功能  --------------------编程问答-------------------- gridview自带有分页功能   有自带分页功能  www.cnjccn.net --------------------编程问答-------------------- AspNetPager。。我用的就是这个。。挺好用的。。 --------------------编程问答-------------------- 你可以自己写存储过程,然后在页面通过传入参数调用存储过程就可以了。也可以使用上面说的aspnetpager。gridview自带的分页不要使用,那个不是真分页 --------------------编程问答-------------------- gridview自带分布,datalist 就得自己写了。。或者用ASPNETPAGER --------------------编程问答-------------------- 分頁存儲過程;
CREATE PROCEDURE [dbo].[sp_SystemQuotationRevisionPaging]
(
@ClientID NVARCHAR(255),
@ClientModel NVARCHAR(255), 
@Collection NVARCHAR(255),
@startIndexpage int,
@endIndexpage int,
@Count INT OUTPUT
)
As
SELECT     
*
FROM 
(SELECT ROW_NUMBER() OVER(ORDER BY CreatedDate DESC) AS row,* FROM QuotationRevision 
WHERE
UPPER(ClientID) LIKE @ClientID +'%'   
AND UPPER(ClientModel) LIKE @ClientModel +'%'
AND (UPPER([Collection]) LIKE  '%'+@Collection +'%'
OR 
(@Collection  = '' AND [Collection] is null))
) QuotationRevision 
WHERE row BETWEEN (@endIndexpage-1)*@startIndexpage+1 AND @endIndexpage*@startIndexpage

SET @Count=(SELECT COUNT(*) FROM  QuotationRevision
 WHERE 
UPPER(ClientID) LIKE @ClientID+'%'
AND UPPER(ClientModel) LIKE @ClientModel+'%'
AND (UPPER([Collection]) LIKE  '%'+@Collection +'%'
OR 
(@Collection  = '' AND [Collection] is null))
)
RETURN
GO
GridView 數據綁定;
 Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSearch.Click
        GenerateData()
    End Sub

    Private Sub GenerateData()
        Dim CurrentPage As Integer
        If Request.QueryString("CurrentPage") Is Nothing Then
            CurrentPage = 1
        Else
            CurrentPage = CInt(Request.QueryString("CurrentPage"))
        End If

        Dim strENGCode As String = txtClientID.Text.Trim
        Dim strERPCode As String = txtClientModel.Text.Trim
        Dim strDescription As String = txtCollection.Text.Trim

        Dim pENGCode As New SqlClient.SqlParameter("@ClientID", SqlDbType.NVarChar)
        Dim pERPCode As New SqlClient.SqlParameter("@ClientModel", SqlDbType.NVarChar)
        Dim pDescription As New SqlClient.SqlParameter("@Collection", SqlDbType.NVarChar)
        Dim pPageSize As New SqlClient.SqlParameter("@startIndexpage", SqlDbType.Int)
        Dim pCurrentPage As New SqlClient.SqlParameter("@endIndexpage", SqlDbType.Int)
        Dim pCount As New SqlClient.SqlParameter("@Count", SqlDbType.Int)

        pENGCode.Value = strENGCode.ToUpper()
        pERPCode.Value = strERPCode.ToUpper()
        pDescription.Value = strDescription.ToUpper()
        pPageSize.Value = 10
        pCurrentPage.Value = CurrentPage
        pCount.Direction = ParameterDirection.Output

        Dim da As New WMO.AppObjects.DataAccess
        Dim conn As SqlClient.SqlConnection = da.Conn
        Dim cmd As New SqlClient.SqlCommand("sp_SystemQuotationRevisionPaging", conn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add(pENGCode)
        cmd.Parameters.Add(pERPCode)
        cmd.Parameters.Add(pDescription)
        cmd.Parameters.Add(pPageSize)
        cmd.Parameters.Add(pCurrentPage)
        cmd.Parameters.Add(pCount)

        conn.Open()
        Dim reader As SqlClient.SqlDataReader = cmd.ExecuteReader()

        GV_QuotationID.DataSource = reader
        GV_QuotationID.DataBind()

        reader.Close()
        conn.Close()

        Dim Count As Integer = CInt(cmd.Parameters("@Count").Value)
        GeneratePaging(CurrentPage, 10, 5, Count)
    End Sub

    Private Sub GeneratePaging(ByVal CurrentPage As Integer, ByVal PageSize As Integer, ByVal MaxPage As Integer, ByVal Count As Integer)
        Dim queryString As String
        If Request.QueryString.Count > 0 Then
            Dim indexCurentPage As Integer = Request.Url.AbsoluteUri.IndexOf("CurrentPage")
            If indexCurentPage <> -1 Then
                queryString = Request.Url.AbsoluteUri.Substring(0, indexCurentPage)
            Else
                queryString = Request.Url.AbsoluteUri + "&"
            End If

        Else
            queryString = Request.Url.AbsoluteUri + "?"
        End If

        Dim PageCount As Integer
        If Count Mod PageSize > 0 Then
            PageCount = Math.Floor(Count / PageSize) + 1
        Else
            PageCount = Math.Floor(Count / PageSize)
        End If

        If PageCount > 1 Then
            Dim scopeNumber = Math.Floor((CurrentPage - 1) / MaxPage)
            Dim startNumber As Integer = scopeNumber * MaxPage + 1
            Dim endNumber As Integer
            If ((scopeNumber + 1) * MaxPage) < PageCount Then
                endNumber = (scopeNumber + 1) * MaxPage
            Else
                endNumber = PageCount
            End If

            Dim table As New Table()
            Dim tr As New TableRow

            'pre page
            If CurrentPage > 1 Then
                Dim td As New TableCell
                Dim href As New HyperLink

                href.Text = "上一頁"
                href.NavigateUrl = queryString + "CurrentPage=" + (CurrentPage - 1).ToString()

                td.Controls.Add(href)
                tr.Controls.Add(td)
            End If

            'pre more
            If scopeNumber > 0 Then
                Dim td As New TableCell
                Dim href As New HyperLink

                href.Text = "..."
                href.NavigateUrl = queryString + "CurrentPage=" + ((scopeNumber - 1) * MaxPage + 1).ToString()
                td.Controls.Add(href)
                tr.Controls.Add(td)
            End If

            'middle
            For i As Integer = startNumber To endNumber
                Dim td As New TableCell
                Dim href As New HyperLink

                href.Text = i
                If i <> CurrentPage Then
                    href.NavigateUrl = queryString + "CurrentPage=" + i.ToString()
                Else
                    href.CssClass = "currentPage"
                End If

                td.Controls.Add(href)
                tr.Controls.Add(td)
            Next

            'last more
            If endNumber < PageCount Then

                Dim td As New TableCell
                Dim href As New HyperLink

                href.Text = "..."
                href.NavigateUrl = queryString + "CurrentPage=" + (endNumber + 1).ToString()

                td.Controls.Add(href)
                tr.Controls.Add(td)
            End If

            'last Number
            If endNumber <> PageCount Then
                Dim td As New TableCell
                Dim href As New HyperLink

                href.Text = PageCount.ToString()
                href.NavigateUrl = queryString + "CurrentPage=" + PageCount.ToString()

                td.Controls.Add(href)
                tr.Controls.Add(td)
            End If

            'last page
            If CurrentPage < PageCount Then
                Dim td As New TableCell
                Dim href As New HyperLink

                href.Text = "下一頁"
                href.NavigateUrl = queryString + "CurrentPage=" + (CurrentPage + 1).ToString()

                td.Controls.Add(href)
                tr.Controls.Add(td)
            End If

            'go
            Dim html = "<a id='lnkPage' style='display:none;'></a>到第<input id='txtPageNo' size='1' onblur='SetPage()' />頁<input type='button' value='確定' onclick='GoPage()' />"
            Dim tdGO As New TableCell
            tdGO.Text = html
            tr.Controls.Add(tdGO)

            table.Controls.Add(tr)
            divPaging.Controls.Add(table)
        End If
    End Sub --------------------编程问答-------------------- 我一般都用PagedDateSouse来做的
把查到的集合用缓存存下,很不错
--------------------编程问答-------------------- ASPNETPAGER --------------------编程问答-------------------- 学习 学习 --------------------编程问答-------------------- 给你项目:加我QQ,里面有很多种类的:(包括可以静态生成页面的分页) --------------------编程问答-------------------- 我的QQ是157636916 --------------------编程问答--------------------
引用 19 楼 xiezhongjun 的回复:
我的QQ是157636916


俺加了。 --------------------编程问答--------------------
引用 3 楼 iceyang123 的回复:
直接启用分页
好的分页界面有插件,可以百度一下

本身就有
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,