首页 > 解决方案 > 当页面参数超过页面计数时,Kentico Pager.PageCount 0

问题描述

当页面参数超过可用页面的最大数量时,有没有办法获取 Pager.PageCount 值?

在下面的代码中,只要页面参数在 1 到 3 之间,totalPages = 3。

但是,如果页面参数 > 3,totalPages 的值 = 0。我想获取 totalPages 的值,以便将客户端重定向到最后一页。

private void InitRepeater()
{
    RepItems.ClassNames = ClassNames;
    RepItems.MaxRelativeLevel = MaxRelativeLevel;
    RepItems.OrderBy = OrderBy;
    RepItems.SelectTopN = SelectTopN;
    RepItems.Path = Path;
    RepItems.FilterOutDuplicates = true;
    RepItems.SelectOnlyPublished = true;
    RepItems.SelectedColumns = GetSelectedColumns();
    SetCategories();

    Pager.PageSize = PagingPageSize;
    Pager.DisplayFirstLastAutomatically = true;
    Pager.DisplayPreviousNextAutomatically = true;
    Pager.HidePagerForSinglePage = true;
    Pager.GroupSize = 3;
    Pager.PageControl = RepItems.ID;
    Pager.UseQueryParameterForFirstPage = true;
    DataBind();

    var currentPage = Pager.CurrentPage;
    var totalPages = Pager.PageCount; 
    WebpartExtensions.ValidatePageParam((ulong)currentPage, (ulong)totalPages);
    WebpartExtensions.UpdateSEOBotLinks(Page, currentPage, totalPages);
}

标签: asp.netkenticoascx

解决方案


想出了一个解决方法

var currentPage = Pager.CurrentPage;
var totalPages = Pager.PageCount;
if(totalPages <= 0)
{
    //page param greater than amount of pages, reset to page 1 to get total pages
    Pager.CurrentPage = 1;
    RepItems.ReloadData(true);
    totalPages = Pager.PageCount;
    Pager.CurrentPage = totalPages;
    RepItems.ReloadData(true);
}
WebpartExtensions.ValidatePageParam((ulong)currentPage, (ulong)totalPages);
WebpartExtensions.UpdateSEOBotLinks(Page, currentPage, totalPages);

推荐阅读