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 --------------------编程问答--------------------
俺加了。 --------------------编程问答--------------------
本身就有
补充:.NET技术 , ASP.NET