Paging con la griglia Telerik MVC quando si utilizza uno sproc
-
25-09-2019 - |
Domanda
La documentazione mostra solo come associare a un oggetto IEnumerable (che utilizza LINQ alla pagina e ordinare) ... ma ho bisogno di andare contro uno sproc perché esprime la query su cui sto lavorando con LINQ sta dimostrando di essere un po ' rallentare.
Qualcuno può fornire linee guida o indicazioni su ciò che è il modo migliore per fare questo?
Soluzione
È necessario utilizzare per personalizzato vincolante . L'esempio mostra come ottenere collegate alla pagina corrente.
Altri suggerimenti
Stai parlando di come associare la griglia Telerik a un set di risultati emessa da una stored procedure, o il modo per implementare il paging in una stored procedure? Non è chiaro dalla tua domanda.
Il seguente T-SQL stored procedure è un molto efficiente attuazione di paging. L'ottimizzatore SQL può trovare il primo ID molto veloce. Combinate questo con l'uso di ROWCOUNT, e si dispone di un approccio che è sia efficiente della CPU e leggere ad alta efficienza. Per una tabella con un gran numero di righe, batte certamente qualsiasi approccio che ho visto con una variabile di tabella o una tabella temporanea.
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
RoadWarrior ti ha dato un grande esempio di uno sProc paging, e korchev ti ha puntato verso vincolante personalizzato.
In realtà, dove i dati proviene da è irrilevante fino a quando si ottiene sotto forma di un IEnumerable, quindi basta ottenere il vostro codice di accesso ai dati scritti, e ottenere i dati fuori in un elenco, dopo vincolante che su misura dovrebbe essere facile.