asp.net использует пагинацию с повторителем - PullRequest
0 голосов
/ 14 ноября 2011

Я хотел создать нумерацию страниц для моего reapeater. В базе данных есть посты. Я хочу, чтобы сначала отображались зарегистрированные пользователи сообщения, а затем остальные (например, 40 на сайт).

Интересно, есть ли способ получить строки базы данных от 40 до 80 или от 80 до 120.

Спасибо за любые подсказки.

1 Ответ

0 голосов
/ 14 ноября 2011

Предположим, что ваша таблица имеет следующие столбцы: ID, UserID, PostedDate, Subject Тогда запрос может выглядеть следующим образом:

DECLARE @LoggedInUserID int,
        @RowsPerPage int,
        @PageNum int;

SELECT  @LoggedInUserID = 1,
        @RowsPerPage = 10,
        @PageNum = 1; 

with BlogPostCTE
AS
(
    select 
    bp.ID,
    bp.UserID,
    bp.PostedDate,
    CASE WHEN bp.UserID = @LoggedInUserID THEN 1 ELSE 0 END as IsLoggedInUser,
    bp.[Subject]
    from BlogPost as bp
), BlogPostWithPagingCTE
AS
(
    Select Top(@RowsPerPage * @PageNum)
    ResultNum = ROW_NUMBER() OVER (ORDER BY IsLoggedInUser desc, UserID, PostedDate asc),
    ID,
    UserID,
    PostedDate,
    IsLoggedInUser,
    [Subject]
    FROM BlogPostCTE
)

select
    ID,
    UserID,
    PostedDate,
    [Subject]
FROM BlogPostWithPagingCTE
where ResultNum > ((@PageNum - 1) * @RowsPerPage)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...