【问题标题】:Limit the page numbers to show on Custom Paging限制页码以显示在自定义分页上
【发布时间】:2015-07-20 03:38:36
【问题描述】:

http://www.aspsnippets.com/Articles/Custom-Paging-in-ASPNet-GridView-using-SQL-Server-Stored-Procedure.aspx

根据上面的教程,我能够在我的 gridview 上创建自定义分页,但是,我想限制页面上显示的页码。示例 当我在每页设置 10 行中显示 10,000 条记录时,页面链接将加载 1 - 1000 个页面链接,这并不理想。

我怎样才能使输出像这样:

前 1 2 3 4 5 6 7 8 9 10 最后

并自动调整

前 2 3 4 5 6 7 8 9 10 11 最后

等等。

这是创建所有页面显示设置的代码

private void PopulatePager(int recordCount, int currentPage)
{
    double dblPageCount = (double)((decimal)recordCount / decimal.Parse(ddlPageSize.SelectedValue));
    int pageCount = (int)Math.Ceiling(dblPageCount);
    List<ListItem> pages = new List<ListItem>();
    if (pageCount > 0)
    {
        pages.Add(new ListItem("First", "1", currentPage > 1));
        for (int i = 1; i <= pageCount; i++)
        {
            pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
        }
        pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
    }
    rptPager.DataSource = pages;
    rptPager.DataBind();
}

【问题讨论】:

    标签: c# sql asp.net gridview custompaging


    【解决方案1】:

    如果阻止则更改你

    if (pageCount > 0)
    {
        int showMax = 10;
        int startPage;
        int endPage;
        if (pageCount <= showMax) 
        {
            startPage = 1;
            endPage = pageCount;
        }
        else
        {
            startPage = currentPage;
            endPage = currentPage + showMax - 1;
        }
    
        pages.Add(new ListItem("First", "1", currentPage > 1));
    
        for (int i = startPage; i <= endPage; i++)
        {
            pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
        }
    
        pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
    }
    

    根据需要更改 showMax。

    【讨论】:

    • 这行得通!谢谢 :) 我如何还包括:分页前的(记录总数)的结果 1-10?
    • 您可以在rptPager(指您的链接)分页控件之前添加一个asp:Label,并根据您当前的页面设置此标签的文本。像“结果”+((currentPage - 1)* pageSize,+ 1)+“-”+ Math.Min(currentPage * pageSize,recordCount)+“of”+recordCount
    • 但是记录的总数呢?例如:1-10 of 10,000。无论如何,谢谢,因为你已经回答了原来的问题
    • 对不起,我在完成评论之前不小心按了 Enter。查看我之前的(更新的)评论。
    【解决方案2】:

    使用这个

    更多信息请使用GridView Paging Sample in ASP.NET

    【讨论】:

    • 这个不适用,因为我的数据源直接来自存储过程,不支持服务器端分页或默认分页,所以我选择自定义分页。
    【解决方案3】:

    您也可以添加它以添加您拥有的确切页面数

          for (int i = startPage; i <= endPage && i<dblPageCount; i++)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多