Любые помощники навигации по страницам для ASP.NET MVC?
-
04-07-2019 - |
Вопрос
Есть ли html-помощники для навигации по страницам? например. если у меня есть 1000 записей для отображения, я хочу отобразить ссылку Предыдущая 1 2 3 4 ... и т.д. Следующая под отфильтрованной коллекцией.
Кто-нибудь знает что-нибудь там?
Решение
Другие советы
Если вы создаете таблицу данных из данных JSON, я настоятельно рекомендую компонент DataTable YUI (библиотеки Yahoo UI) ( http://developer.yahoo.com/yui/datatable/ ). Он отлично справляется с подкачкой страниц, и у вас есть возможность вернуть весь набор записей для начала, а затем пролистать все это на стороне клиента или возвратить выгружаемый набор с сервера.
Вероятно, не подойдет вашему сценарию, но я подумал, что упомяну это.
В моем динамическом приложении для примера приложения MVC есть сетка подкачки , но сетка отрисована вручную. Данные используют PagedList, полученный от Роба Конери (который, я думаю, получил его от ScottGu).
Я думал о том, как может выглядеть помощник с постраничной сеткой для MVC ...
Что я сделал для подкачки страниц, так это для создания элемента управления 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<*>quot;, 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 "], out page) int.TryParse (Request.Params [" pageSize "], размер out))
и используйте результаты с вашими компонентами доступа к данным, чтобы захватить страницу данных, отобразить ее как html и вернуть.
Надеюсь, это поможет, я могу расширить его, если это необходимо.