当记录非常多的时候,分页是显示所有的页面,打破了视图。
我怎么做才能插入那个过滤器,在页数中间显示'...'三点?
分页类
public class Pagination<T> where T : class
{
public Pagination()
{
}
public Pagination(List<T> itens, int count)
{
this.Count = count;
this.List = itens;
}
public IEnumerable<T> List { get; set; }
public int Count { get; set; }
}
Repository这里使用Dapper
public Pagination<LocalDaOperacao> ObterLocalOperacaoPaginado(string nome, int pageSize, int pageNumber)
{
var cn = this.DbContext.Database.Connection;
var sql = @"SELECT * FROM LOCAL_OPERACAO local
WHERE (LTRIM(:Nome) IS NULL OR LTRIM(local.NOME) LIKE LTRIM(CONCAT(:Nome, '%')))
ORDER BY local.NOME
OFFSET :pageSize * (:pageNumber - 1) ROWS
FETCH NEXT :pageSize ROWS ONLY ";
var sqlCount = @"SELECT COUNT(Id) FROM Local_Operacao local
WHERE (:Nome IS NULL OR local.Nome LIKE CONCAT(:Nome, '%'))";
var multi2 = cn.QueryMultiple(sqlCount, new { Nome = nome });
var multi = cn.QueryMultiple(sql, new { Nome = nome, PageSize = pageSize, PageNumber = pageNumber });
var locais = multi.Read<LocalDaOperacao>();
var total = multi2.Read<int>().FirstOrDefault();
var pagedList= new Pagination<LocalDaOperacao>()
{
List = locais,
Count = total
};
return pagedList;
}
控制器
public const int PageSize = 8;
public ActionResult Index(string search, int pageNumber= 1 )
{
var pagination= _localDaOperacaoAppService.getAll(search, PageSize ,pageNumber);
ViewBag.Total = Math.Ceiling((double)pagination.Count / PageSize);
ViewBag.PageNumber= pageNumber;
ViewBag.SearchRecord= search;
return View(pagination.List);
}
前端
<li class="page-item">
@if (ViewBag.PageNumber> 1)
{
<a class="page-link" href="@Url.Action("Index", "LocalDaOperacao", new { search= ViewBag.SearchRecord, pageNumber= ViewBag.PageNumber- 1 })"> Anterior</a>
}
else
{
<a class="page-item disabled">
<span class="page-link">Previus</span>
</a>
}
</li>
@{
var currentPage= ViewBag.PageNumber;
for (int i = 1; i <= ViewBag.Total; i++)
{
<li @Html.Raw(currentPage== i ? "class=\"page-item active\"" : "") )>
<a class="page-link" href="@Url.Action("Index", "LocalDaOperacao", new { search= ViewBag.SearchRecord, pageNumber= i })">@i</a>
</li>
}
}
<li class="page-item">
@if (ViewBag.PageNumber< ViewBag.Total)
{
<a class="page-link" href="@Url.Action(" Index", "LocalDaOperacao" , new { search=ViewBag.SearchRecord, pageNumber=ViewBag.NumeroDePaginas + 1 })">Next</a>
}
else
{
<a class="page-item disabled">
<span class="page-link">Next</span>
</a>
}
</ul>
如果你分页这样的。
Previus