GridView(RadGrid)和自定义分页 [英] GridView (RadGrid) and Custom Paging

查看:192
本文介绍了GridView(RadGrid)和自定义分页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好,所以我试图在Telerik RadGrid上进行自定义分页(类似于asp:Gridview),但是我仍然碰壁. (我的问题的第一部分已在此处回答了)

Ok, so I'm trying to get my custom paging going on the Telerik RadGrid (similar to the asp:Gridview), but I'm still hitting a wall. (the first part of my question was answered here)

因此,我已经执行了该建议.我使用以下存储过程

So I have implemented the suggestion. I use the following Stored Proc

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

然后是另一个存储过程来获取记录计数

Then another stored procedure to get the record count

ALTER PROCEDURE [dbo].[bt_HealthMonitor_GetRecordCount]

AS
SET NOCOUNT ON

return (Select Count(ID) As TotalRecords From bt_HealthMonitor)

我正在使用LINQ to SQL绑定到我的RadGrid

And I'm using LINQ to SQL to bind to my 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行,以便显示分页图标

But the problem I'm experiencing is that the grid only grabs the first 10 rows (as expected) but I need to get it so that it will recognize that there are 200 rows in the table so that the paging icons show up.

如果我使用下拉列表显示50条记录,则显示50条记录,但仍然没有分页图标可将我带到下50条记录.

If I use the dropdownlist to display 50 records, then 50 show up, but still no paging icons to get me to the next 50.

我在做什么错了?

推荐答案

您需要告诉网格总共有多少条记录.这是通过设置网格的VirtualItemCount属性来完成的(您将不得不查询记录的总数).

You need to tell the grid how many records there are in total. This is done by setting the grid's VirtualItemCount property (you will have to query the total number of records).

有关详细信息,请查看文档页面或参考

For details, have a look at the documentation page or refer to the online demo for custom paging.

这篇关于GridView(RadGrid)和自定义分页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆