Вопрос

Хорошо, так что я пытаюсь получить свой пользовательский пейджинг, идущий на телерик Radgrid (похоже на 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)

И я использую LINQ для SQL, чтобы привязать мой 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 Собственность (вам придется запрашивать общее количество записей).

Подробнее, посмотрите на Страница документации или обратитесь к онлайн демонстрация для пользовательских пейджинга.

Другие советы

Мартин прав в отношении VirtualteMcount. Самое простое место для реализации этого происходит в мероприятии по желанию.

Помните, что вам нужно будет поместить туда-нибудь логику, чтобы объяснить меньше записей на последней странице. Это означает, что если у вас есть 14 записей с 5 на странице, вы хотите убедиться, что ваша логика пытается только получить 4 записи на последний вызов.

Вот как я это сделал (используя универсальный список):

    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

Очевидно, вы захотите сделать это как часть вашего вызова доступа к данным, если вы только извлекаете записи из базы данных, как вы идете.

Вы можете реализовать также использовать ObjectDataSource.

http://www.unboxedsolutions.com/sean/chive/2005/12/28/818.aspx.

Т.е. с использованием Radgrid с ObjectDataSource с навлечениями, т.е. логикой подкачки необходимо реализовать самостоятельно.

Также ObjectDataSource имеет два метода 1. SelectMethod (где вы можете указать метод, который возвращает данные) 2. ВыборCountMethod (где вы можете указать метод, который возвращает общий счет)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top