如何缩短列表中显示的页数?
目前,在搜索时,结果页面将显示列表中的每个数字 例如,最后一页的第1,2,3,4,5,6,7,8,9,10等。有些搜索结果最多可以有40页,所以看起来有点乱。
如何更改代码以显示这样的页面 例如,第1页,第2页,第3页,第9页,第10页。最后一页。
当选择第3页时,列表会显示 例如,第1页,第4页,第5页,第9页,第10页。最后一页。
我正在使用.NET MVC3。 这是用于生成视图的代码
<%@ Control Language="C#"Inherits="System.Web.Mvc.ViewUserControl<MyApp.Web.Extensions.PaginatedList<MyApp.Data.Product>>" %>
<div style="text-align: center; margin-bottom: 5px;">
<ul id="paginator">
<% if (Model.HasPreviousPage)
{ %>
<li>
<%= Html.RouteLink("First Page", new { namespaces = "Administrator", controller = "Products", action = "ViewAll", page = 0 })%></li>
<% } %>
<% else %>
<% { %>
<li>First Page</li>
<% } %>
<%-- Show all the pages here in a list --%>
<% for (int i = 0; i < Model.TotalPages; i++) %>
<% { %>
<% if (i == Model.PageIndex) %>
<% { %>
<li>
<%: i+1 %></li>
<% } %>
<% else %>
<% { %>
<li>
<%= Html.RouteLink((i + 1).ToString(), new { namespaces = "Administrator", controller = "Products", action = "ViewAll", page = i })%>
</li>
<% } %>
<% } %>
<% if (Model.HasNextPage)
{ %>
<li>
<%= Html.RouteLink("Last Page", new { namespaces = "Administrator", controller = "Products", action = "ViewAll", page = Model.TotalPages - 1 })%></li>
<% } %>
<% else %>
<% { %>
<li>Last Page</li>
<% } %>
</ul>
</div>
该类的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MyApp.Web.Extensions
{
public class PaginatedList<T> : List<T> where T : MyApp.Data.Product
{
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }
public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.OrderBy(t => t.CreatedDate).OrderByDescending(t => t.CreatedDate).Skip(PageIndex * PageSize).Take(PageSize));
}
public bool HasPreviousPage
{
get
{
return (PageIndex > 0);
}
}
public bool HasNextPage
{
get
{
return (PageIndex + 1 < TotalPages);
}
}
}
}
如果需要其他信息,请发表评论。 还要提前感谢您提供的任何帮助。
答案 0 :(得分:3)
这就是你要找的......
答案 1 :(得分:2)