Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 限制在自定义分页上显示的页码_C#_Sql_Asp.net_Gridview_Custompaging - Fatal编程技术网

C# 限制在自定义分页上显示的页码

C# 限制在自定义分页上显示的页码,c#,sql,asp.net,gridview,custompaging,C#,Sql,Asp.net,Gridview,Custompaging,基于上面的教程,我能够在gridview上创建自定义分页,但是,我想限制页面上显示的页码。例如,当我有10000条记录以每页10行的设置显示时,页面链接将加载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) {

基于上面的教程,我能够在gridview上创建自定义分页,但是,我想限制页面上显示的页码。例如,当我有10000条记录以每页10行的设置显示时,页面链接将加载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();
}
private void populatepage(int recordCount,int currentPage)
{
double dblPageCount=(double)((decimal)recordCount/decimal.Parse(ddlPageSize.SelectedValue));
int pageCount=(int)数学上限(dblPageCount);
列表页=新列表();
如果(页面计数>0)
{
添加(新列表项(“第一”,“1”,当前页面>1));
对于(inti=1;i使用此

更多信息请使用此


更多信息请使用

将您的if block更改为此

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));
}
if(页面计数>0)
{
int showMax=10;
国际起始页;
内尾页;
如果(页数1));

对于(int i=startPage;i将您的if block更改为此

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));
}
if(页面计数>0)
{
int showMax=10;
国际起始页;
内尾页;
如果(页数1));

对于(inti=startPage;i您还可以添加此项以添加您拥有的确切页数

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

for(int i=startPage;i您还可以添加此项以添加您拥有的确切页数

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

用于(int i=startPage;i这不适用,因为我的数据源直接来自存储过程,它不支持服务器端分页或默认分页,这就是我选择自定义分页的原因。这不适用,因为我的数据源直接来自存储过程,它不支持服务器端分页或默认分页,这就是我选择自定义分页的原因se自定义分页。这正在工作!谢谢:)如何在分页之前包括:结果1-10(记录总数)?您可以在rptPager(参考链接)分页控件之前添加asp:Label,并根据当前页面设置此标签的文本。类似于“结果”+((当前页面-1)*页面大小,+1)+“-”+Math.Min(currentPage*pageSize,recordCount)+“of”+recordCount但记录的总数如何?例如:10000中的1-10。无论如何,谢谢,因为您回答了原始问题抱歉,我在完成评论之前不小心按了enter。请查看我(更新的)早期评论。这很有效!谢谢:)如何在分页之前包括:结果1-10(记录总数)?您可以在rptPager(指您的链接)分页控件之前添加asp:Label,并基于当前页面设置此标签的文本。类似于“结果”+((currentPage-1)*pageSize,+1)+“-”+Math.Min(currentPage*pageSize,recordCount)“+”of“+RecordCount但记录总数如何?例如:10000条中的1-10条。无论如何,谢谢您,因为您回答了原始问题。对不起,在完成评论之前,我不小心按了enter键。请查看我(更新的)之前的评论。