1

问题描述 投票:1回答:1

当记录非常多的时候,分页是显示所有的页面,打破了视图。

我怎么做才能插入那个过滤器,在页数中间显示'...'三点?

这是视图上的结果,如果记录很多,就不实用了。enter image description here

分页类

 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>

c# asp.net-mvc twitter-bootstrap pagination
1个回答
0
投票

如果你分页这样的。

Previus

© www.soinside.com 2019 - 2024. All rights reserved.