Telerik GridView(RadGrid)和自定义分页
好的,我正试图在Telerik RadGrid上进行我的自定义分页(类似于Telerik GridView(RadGrid)和自定义分页,telerik,radgrid,custom-paging,Telerik,Radgrid,Custom Paging,好的,我正试图在Telerik RadGrid上进行我的自定义分页(类似于asp:Gridview),但我仍然遇到了麻烦。(回答了我问题的第一部分) 所以我已经实施了这个建议。我使用以下存储过程 ALTER PROCEDURE [dbo].[bt_HealthMonitor_GetAll] ( @StartRowIndex int, @MaximumRows int ) AS SET NOCOUNT ON Select RowNum, [ID], [e
asp:Gridview
),但我仍然遇到了麻烦。(回答了我问题的第一部分)
所以我已经实施了这个建议。我使用以下存储过程
ALTER PROCEDURE [dbo].[bt_HealthMonitor_GetAll]
(
@StartRowIndex int,
@MaximumRows int
)
AS
SET NOCOUNT ON
Select
RowNum,
[ID],
[errEx],
[errURL],
[errSource],
[errUser],
[errMessage],
[errIP],
[errBrowser],
[errOS],
[errStack],
[errDate],
[errNotes]
From
(
Select
[ID],
[errEx],
[errURL],
[errSource],
[errUser],
[errMessage],
[errIP],
[errBrowser],
[errOS],
[errStack],
[errDate],
[errNotes],
Row_Number() Over(Order By [ID]) As RowNum
From dbo.[bt_HealthMonitor] t
)
As DerivedTableName
Where RowNum Between @StartRowIndex And (@StartRowIndex + @MaximumRows)
Order By [ID] Desc
然后使用另一个存储过程来获取记录计数
ALTER PROCEDURE [dbo].[bt_HealthMonitor_GetRecordCount]
AS
SET NOCOUNT ON
return (Select Count(ID) As TotalRecords From bt_HealthMonitor)
我正在使用LINQtoSQL绑定到我的RadGrid
Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs)
Dim startRowIndex As Integer = (RadGrid1.CurrentPageIndex * RadGrid1.PageSize)
Dim maximumRows As Integer = RadGrid1.PageSize
Dim HealthMonitorDC As New DAL.HealthMonitorDataContext
Dim r = HealthMonitorDC.bt_HealthMonitor_GetAll(startRowIndex, maximumRows)
RadGrid1.DataSource = r
End Sub
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
Dim HealthMonitorDC As New DAL.HealthMonitorDataContext
Dim count = HealthMonitorDC.bt_HealthMonitor_GetRecordCount()
RadGrid1.MasterTableView.VirtualItemCount = count.ReturnValue
RadGrid1.VirtualItemCount = count.ReturnValue
End Sub
但我遇到的问题是网格只获取前10行(如预期的那样),但我需要获取它,以便它能够识别表中有200行,从而显示分页图标
如果我使用dropdownlist显示50条记录,那么会显示50条记录,但仍然没有分页图标让我进入下一个50条记录
我做错了什么?您需要告诉网格总共有多少条记录。这是通过设置网格的
VirtualItemCount
属性来实现的(您必须查询记录总数)
有关详细信息,请查看或参考。Martin关于VirtualItemCount的说法是正确的。实现这一点最简单的地方是在NeedDataSource事件中 请记住,您需要在其中加入一些逻辑,以减少最后一页上的记录。这意味着,如果您有14条记录,每页5条,那么您需要确保您的逻辑在最后一次调用中只尝试检索4条记录 以下是我是如何做到的(使用通用列表):
如果gridRecords.Count<(grid.pagesize*(grid.pageIndex+1)),则
GetRange(grid.pageIndex*grid.pagesize,gridRecords.Count-(grid.pagesize*grid.pageIndex))
其他的
gridRecords.GetRange(grid.pageIndex*grid.pagesize,grid.pagesize)
如果结束
显然,如果您只在执行过程中从数据库检索记录,那么您将希望在数据访问调用中执行此操作。您也可以使用ObjectDataSource实现 i、 e使用RadGrid和ObjectDataSource以及CustomPaging,即需要自己实现分页逻辑 ObjectDataSource还有两种方法 1.SelectMethod(可指定返回数据的方法)
2.选择CountMethod(您可以指定返回总计数的方法)我已经编辑了上面的问题。我已经做了演示中“看起来”是建议的事情,但我仍然只得到了顶部的“X”记录,其中“X”是
RadGrid1.PageSize
Nevermind。。。我解决了。忘了把allowcustompaging=“true”
你是一个明星,为我节省了至少一个小时来编写自定义数据源来处理这个问题,并且不确定它是否会起作用,再次感谢hanks@Martin的帮助。我把我的发现发布在我的博客上,希望其他人能找到并使用
If gridRecords.Count < (grid.pagesize * (grid.pageIndex + 1)) Then
gridRecords.GetRange(grid.pageIndex * grid.pagesize, gridRecords.Count - (grid.pagesize * grid.pageIndex))
Else
gridRecords.GetRange(grid.pageIndex * grid.pagesize, grid.pagesize)
End If