Любые помощники навигации по страницам для ASP.NET MVC? - PullRequest
6 голосов
/ 28 октября 2008

Существуют ли html-помощники для навигации по страницам. например. если у меня есть 1000 записей для отображения, я хочу отобразить ссылку «Предыдущая 1 2 3 4 ... и т.д. Следующая» в отфильтрованной коллекции.

Кто-нибудь знает что-нибудь там?

Ответы [ 4 ]

3 голосов
/ 28 октября 2008

Если вы создаете таблицу данных из данных JSON, я настоятельно рекомендую компонент DataTable YUI (библиотеки Yahoo UI) (http://developer.yahoo.com/yui/datatable/).. Он очень хорошо справляется с подкачкой, и у вас есть возможность вернуть весь набор записей. для начала, а затем пролистывать все это на стороне клиента или возвращать выгружаемый набор с сервера.

Вероятно, не будет соответствовать вашему сценарию, но я подумал, что упомяну это.

1 голос
/ 28 октября 2008
0 голосов
/ 30 октября 2008

Что я сделал для пейджинга, так это для создания элемента управления Pager, Для обновления требуется URL страницы, идентификатор элемента html, номер страницы, размер страницы и общее количество.

URL-адрес подкачки относится к контроллеру формы / действию, в котором действие возвращает строку html (отображаемую страницу данных)

Пейджер добавляет список ссылок javascript для страниц. Эти ссылки вызывают основанную на jQuery ajax-функцию, которая обращается к URL-адресу подкачки. Каждый щелчок страницы заменяет текущее содержимое элемента html результатами вызова ajax. Как то так:

public string Render()
{
    var buffer = new StringBuilder( 1000 );
    buffer.AppendLine( @"<ul class=""datatable_pager"">" )
        .AppendLine( "\t<li>Additional Pages:</li>" );
    int numberOfPages = TotalItemCount % PageSize == 0 ? TotalItemCount / PageSize : TotalItemCount / PageSize + 1;

    for( int i = 0; i < numberOfPages; i++ )
    {
        AppendPageLink( buffer, i );
    }

    buffer.AppendLine( "\t</ul>" );
    AppendPagingJS( buffer );

    return buffer.ToString( );
}

private void AppendPageLink( StringBuilder buffer, int i )
{
    buffer.Append( "\t\t<li><a href=\"" )
    .Append( PagingLink.Replace( "$PAGE$", i.ToString( ) ) )
    .Append( "\">" )
    .Append( i.ToString( ) )
    .Append( "</a>" )
    .AppendLine( "\t\t</li>" );
}


private void AppendPagingJS( StringBuilder buffer )
{
    buffer.AppendLine( @"
        <script type=""text/javascript"">
        function page( page, size, updateElement )
        {
            $.post( '" + PagingUrl + @"',
                {
                    pageNumber: page, 
                    pageSize: size,
                },
                function(response) 
                {
                    $(""#"" + updateElement).html(response);
                },
                ""html""
            );
        }
        </script>" );
}

Javascript отправляет на URL-адрес подкачки, поэтому в этом случае действие должно быть выполнено примерно так:

int.TryParse (Request.Params ["pageNumber"], выходная страница) int.TryParse (Request.Params ["pageSize"], размер))

и используйте результаты с вашими компонентами доступа к данным, чтобы захватить страницу данных, отобразить ее как HTML и вернуть.

Надеюсь, это поможет, я могу расширить его, если это необходимо.

0 голосов
/ 28 октября 2008

В моем примере приложения Dynamic Data for MVC * есть пейджинговая сетка , но сетка отрисовывается вручную. Данные используют PagedList, полученный от Роба Конери (который, я думаю, получил его от ScottGu).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...