Как выбрать 12 строк данного набора результатов для использования в DataGrid / Paging? Необходимо переопределить кэширование Grid по умолчанию - PullRequest
1 голос
/ 27 октября 2010

У меня есть запрос SQL, который вернет более 10000 строк.Поскольку клиент будет одновременно просматривать только 12 строк, как мне изменить свой SQL, чтобы я мог выбрать только нужные строки?

Я ожидаю, что я буду запрашивать базу данных каждый раз, когда пользователь нажимает насетки.Мое решение основано на демонстрации ниже, однако я пытаюсь выполнить эту работу с таблицей "OrderDetail" северного ветра, которая не имеет чистого / последовательного значения идентификатора.

http://demos.telerik.com/aspnet-ajax/grid/examples/client/virtualscrollpaging/defaultcs.aspx

Я использую SQL Express в своей локальной среде разработки, но буду использовать SQL 2008 в рабочей среде.

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Вы можете использовать функцию ROW_NUMBER():

WITH paging AS 
(
    SELECT
        ROW_NUMBER() OVER (ORDER BY COLUMN) AS rowNum,
        ...
    FROM table
) 
SELECT *
FROM paging
WHERE rowNum BETWEEN 1 AND 12

Это создает CTE, но может также использовать временную таблицу или табличную переменную. Затем можно добавить некоторые параметры, чтобы указать целые числа для предложения BETWEEN.

2 голосов
/ 27 октября 2010
WITH [EMPLOYEE ORDERED BY ROWID] AS
(SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE)
SELECT FROM [EMPLOYEE ORDERED BY ROWID] WHERE ROWID <= 12
...