Пейджинг с сеткой Telerik MVC при использовании sproc

В документации показано только, как привязать к IEnumerable (который использует linq для страницы и сортировки) ... но мне нужно идти против sproc, потому что выражение запроса, над которым я работаю, с linq оказывается немного медленным.

Может ли кто-нибудь дать какие-либо рекомендации или указатели о том, как лучше всего это сделать?


person Joel Martinez    schedule 04.08.2010    source источник


Ответы (3)


Вам необходимо использовать пользовательскую привязку. Связанный пример показывает, как получить текущую страницу.

person Atanas Korchev    schedule 05.08.2010

Вы говорите о том, как связать сетку Telerik с набором результатов, созданным хранимой процедурой, или как реализовать пейджинг в хранимой процедуре? Из вашего вопроса не ясно.

Следующая хранимая процедура T-SQL представляет собой очень эффективную реализацию подкачки. Оптимизатор SQL может очень быстро найти первый идентификатор. Объедините это с использованием ROWCOUNT, и вы получите подход, который эффективно использует ЦП и считывает данные. Для таблицы с большим количеством строк это, безусловно, превосходит любой подход, который я видел, используя временную таблицу или табличную переменную.

CREATE  PROCEDURE dbo.PagingTest
(
    @PageNumber int,
    @PageSize int
)
AS

DECLARE @FirstId int, @FirstRow int

SET @FirstRow = ( (@PageNumber - 1) * @PageSize ) + 1
SET ROWCOUNT @FirstRow

-- Add check here to ensure that @FirstRow is not
-- greater than the number of rows in the table.

SELECT   @FirstId = [Id]
FROM     dbo.TestTable
ORDER BY [Id]

SET ROWCOUNT @PageSize

SELECT   *
FROM     dbo.TestTable
WHERE    [Id] >= @FirstId
ORDER BY [Id]

SET ROWCOUNT 0
GO 
person HTTP 410    schedule 04.08.2010
comment
Это была смесь обоих вопросов. Вопрос в том, как реализовать пейджинг чтобы он работал с сеткой телерика ... в его нынешнем виде все демонстрации, которые я видел, просто используют linq, поэтому, предположительно, он обрабатывает сортировку и пейджинг с помощью методов linq. . Это отличный пример sproc подкачки ... спасибо, теперь следующая часть вопроса, как вы упомянули, как связать его, чтобы сетка сообщала номер страницы и размер страницы sproc :-) - person Joel Martinez; 04.08.2010

RoadWarrior дал вам отличный пример процедуры подкачки, а korchev указал вам на пользовательскую привязку.

На самом деле, откуда поступают данные, не имеет значения, пока вы получаете их в форме IEnumerable, поэтому просто напишите свой код доступа к данным и выведите данные в список после этого пользовательского связывания должно быть легко.

person ozz    schedule 22.11.2010