Пейджинг с сеткой Telerik MVC при использовании sproc - PullRequest
4 голосов
/ 04 августа 2010

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

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

Ответы [ 3 ]

6 голосов
/ 05 августа 2010

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

3 голосов
/ 04 августа 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 
0 голосов
/ 22 ноября 2010

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

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

...