4

설명서는 IEnumerable (linq를 사용하여 페이지 및 정렬)에 바인딩하는 방법 만 보여줍니다 ...하지만 쿼리를 표현하기 때문에 sproc을 상대로해야합니다. linq 작업은 약간 느린 것으로 입증됩니다.sproc을 사용할 때 Telerik MVC 그리드 페이징

아무에게도 가이드 라인이나 지침을 제공 할 수있는 가장 좋은 방법은 무엇입니까?

답변

6

custom binding을 사용해야합니다. 링크 된 예제는 현재 페이지를 가져 오는 방법을 보여줍니다.

3

저장 프로 시저에서 생성 된 결과 집합에 Telerik 표를 바인딩하는 방법 또는 저장 프로 시저에서 호출을 구현하는 방법에 대해 이야기하고 있습니까? 귀하의 질문에서 명확하지 않습니다.

다음 T-SQL 저장 프로 시저는 매우 효율적인 페이징 구현입니다. SQL 최적화 프로그램은 첫 번째 ID를 매우 빠르게 찾을 수 있습니다. 이것을 ROWCOUNT의 사용과 결합하면 CPU 효율성과 읽기 효율성 모두를 구현할 수 있습니다. 많은 수의 행이있는 테이블의 경우, 임시 테이블이나 테이블 변수를 사용하여 보았던 모든 접근법을 확실히 능가합니다.

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

두 가지 질문이 혼합되어 있습니다. 질문은 페이징 *을 구현하여 telerik 그리드와 함께 작동하도록하는 방법입니다. * ... 필자가 본 모든 데모는 linq를 사용하므로 linq 메소드를 사용하여 정렬 및 페이징을 처리하는 것 같습니다. 이것은 페이징 sproc의 좋은 예입니다 ... 고맙습니다. 이제 질문의 다음 부분은 언급 한대로, 바인드하는 방법입니다. 그래서 그리드는 페이지 번호와 페이지 크기를 sproc에 전달합니다 :-) –

0

RoadWarrior는 페이징 sproc의 훌륭한 예를 보여 주었고 korchev가 사용자 지정 바인딩에 대해 지적했습니다.

실제로 IEnumerable 형식으로 가져 오는 한 데이터의 출처가 부적절하므로 데이터 액세스 코드를 작성하고 사용자 지정 바인딩 후에 목록에 데이터를 가져와야합니다 쉬워.

관련 문제