PagedList.Mvc省略号按钮不起作用

苏尼尔

我在MVC 5应用程序中使用PagedList.Mvc进行分页。

问:省略号按钮位于下面屏幕截图的第10页之后,但单击后无任何作用。那应该是这样吗,还是我可以使省略号按钮起作用,所以单击它可以显示下一组页面?

省略号按钮不起作用

视图中用于显示此寻呼机的html帮助器如下。

@Html.PagedListPager(Model, page => Url.Action("Index", 
 new { page, sortOrder = ViewBag.CurrentSort, SearchText = ViewBag.SearchText }))
苏尼尔

有效的解决方案是隐藏省略号按钮。

解决方案

此解决方案涉及隐藏省略号按钮。为此,您需要确保DisplayEllipsesWhenNotShowingAllPageNumbersunder PagedListRenderOptionsclass的属性设置为false,因为默认情况下为true。它的此设置使寻呼机显示省略号按钮。

下面给出的代码段将进入您的View或PartialView html中,您将需要更改一些自定义参数,例如sortOrder和action name等。

取消分页器时隐藏省略号按钮

@Html.PagedListPager(Model,
 page => Url.Action("GetOrderDetails", new { page, sortOrder = ViewBag.CurrentSort,
 , command = "paging", PageSize = ViewBag.PageSize }), 
 PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( 
 new PagedListRenderOptions { DisplayEllipsesWhenNotShowingAllPageNumbers = false},
 new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "gridTable",
 OnBegin = "OnBegin", OnSuccess = "OnSuccess" }))

当分页器未ajaxized时,隐藏“省略号”按钮

@Html.PagedListPager(Model, page => Url.Action("Index", new { page, 
sortOrder = ViewBag.CurrentSort, command = "paging", PageSize = ViewBag.PageSize}),
new PagedListRenderOptions { DisplayEllipsesWhenNotShowingAllPageNumbers = false })

另一个解决方案

从GitHub的https://github.com/troygoode/PagedList下载源代码,然后在Visual Studio中打开解决方案。

HtmlHelper.cs类中,添加以下2个方法。

private static TagBuilder PreviousEllipsis(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options, int firstPageToDisplay)
    {
        var targetPageNumber = firstPageToDisplay - 1;//list.PageNumber - 1;
        var previous = new TagBuilder("a")
        {
            InnerHtml = string.Format(options.EllipsesFormat, targetPageNumber)
        };
        previous.Attributes["rel"] = "prev";

        if (!list.HasPreviousPage)
            return WrapInListItem(previous, options, "PagedList-skipToPrevious","disabled");

        previous.Attributes["href"] = generatePageUrl(targetPageNumber);
        return WrapInListItem(previous, options, "PagedList-skipToPrevious");
    }
    private static TagBuilder NextEllipsis(IPagedList list, Func<int, string> generatePageUrl, PagedListRenderOptions options, int lastPageToDisplay)
    {
        var targetPageNumber = lastPageToDisplay + 1;// list.PageNumber  +1;
        var next = new TagBuilder("a")
        {
            InnerHtml = string.Format(options.EllipsesFormat, targetPageNumber)
        };
        next.Attributes["rel"] = "next";

        if (!list.HasNextPage)
            return   WrapInListItem(next, options, "PagedList-skipToNext", "disabled");

        next.Attributes["href"] = generatePageUrl(targetPageNumber);
        return WrapInListItem(next, options, "PagedList-skipToNext");
    }

在同一HtmlHelper.cs中PagedListPager用以下代码替换现有的方法这段代码只有2处更改,而这是的注释行之前插入的2行//listItemLinks.Add(Ellipses(options));该方法中有2个地方在原始代码中出现此行,这些地方已被注释并由对上面代码片段中定义的新方法的调用所代替。

    ///<summary>
    /// Displays a configurable paging control for instances of PagedList.
    ///</summary>
    ///<param name = "html">This method is meant to hook off HtmlHelper as an extension method.</param>
    ///<param name = "list">The PagedList to use as the data source.</param>
    ///<param name = "generatePageUrl">A function that takes the page number  of the desired page and returns a URL-string that will load that page.</param>
    ///<param name = "options">Formatting options.</param>
    ///<returns>Outputs the paging control HTML.</returns>
    public static MvcHtmlString PagedListPager(this System.Web.Mvc.HtmlHelper html,
                                               IPagedList list,
                                               Func<int, string> generatePageUrl,
                                               PagedListRenderOptions options)
    {
        if (options.Display == PagedListDisplayMode.Never || (options.Display == PagedListDisplayMode.IfNeeded && list.PageCount <= 1))
            return null;

        var listItemLinks = new List<TagBuilder>();

        //calculate start and end of range of page numbers
        var firstPageToDisplay = 1;
        var lastPageToDisplay = list.PageCount;
        var pageNumbersToDisplay = lastPageToDisplay;
        if (options.MaximumPageNumbersToDisplay.HasValue && list.PageCount > options.MaximumPageNumbersToDisplay)
        {
            // cannot fit all pages into pager
            var maxPageNumbersToDisplay = options.MaximumPageNumbersToDisplay.Value;
            firstPageToDisplay = list.PageNumber - maxPageNumbersToDisplay / 2;
            if (firstPageToDisplay < 1)
                firstPageToDisplay = 1;
            pageNumbersToDisplay = maxPageNumbersToDisplay;
            lastPageToDisplay = firstPageToDisplay + pageNumbersToDisplay - 1;
            if (lastPageToDisplay > list.PageCount)
                firstPageToDisplay = list.PageCount - maxPageNumbersToDisplay + 1;
        }


        //first
        if (options.DisplayLinkToFirstPage == PagedListDisplayMode.Always || (options.DisplayLinkToFirstPage == PagedListDisplayMode.IfNeeded && firstPageToDisplay > 1))
            listItemLinks.Add(First(list, generatePageUrl, options));

        //previous
        if (options.DisplayLinkToPreviousPage == PagedListDisplayMode.Always || (options.DisplayLinkToPreviousPage == PagedListDisplayMode.IfNeeded && !list.IsFirstPage))
            listItemLinks.Add(Previous(list, generatePageUrl, options));

        //text
        if (options.DisplayPageCountAndCurrentLocation)
            listItemLinks.Add(PageCountAndLocationText(list, options));

        //text
        if (options.DisplayItemSliceAndTotal)
            listItemLinks.Add(ItemSliceAndTotalText(list, options));

        //page
        if (options.DisplayLinkToIndividualPages)
        {
            //if there are previous page numbers not displayed, show an ellipsis
            if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && firstPageToDisplay > 1)
                listItemLinks.Add(PreviousEllipsis(list, generatePageUrl, options, firstPageToDisplay));
                //listItemLinks.Add(Ellipses(options));

            foreach (var i in Enumerable.Range(firstPageToDisplay, pageNumbersToDisplay))
            {
                //show delimiter between page numbers
                if (i > firstPageToDisplay && !string.IsNullOrWhiteSpace(options.DelimiterBetweenPageNumbers))
                    listItemLinks.Add(WrapInListItem(options.DelimiterBetweenPageNumbers));

                //show page number link
                listItemLinks.Add(Page(i, list, generatePageUrl, options));
            }

            //if there are subsequent page numbers not displayed, show an ellipsis
            if (options.DisplayEllipsesWhenNotShowingAllPageNumbers && (firstPageToDisplay + pageNumbersToDisplay - 1) < list.PageCount)
                listItemLinks.Add(NextEllipsis(list, generatePageUrl, options, lastPageToDisplay));
                //listItemLinks.Add(Ellipses(options));
        }

        //next
        if (options.DisplayLinkToNextPage == PagedListDisplayMode.Always || (options.DisplayLinkToNextPage == PagedListDisplayMode.IfNeeded && !list.IsLastPage))
            listItemLinks.Add(Next(list, generatePageUrl, options));

        //last
        if (options.DisplayLinkToLastPage == PagedListDisplayMode.Always || (options.DisplayLinkToLastPage == PagedListDisplayMode.IfNeeded && lastPageToDisplay < list.PageCount))
            listItemLinks.Add(Last(list, generatePageUrl, options));

        if(listItemLinks.Any())
        {
            //append class to first item in list?
            if (!string.IsNullOrWhiteSpace(options.ClassToApplyToFirstListItemInPager))
                listItemLinks.First().AddCssClass(options.ClassToApplyToFirstListItemInPager);

            //append class to last item in list?
            if (!string.IsNullOrWhiteSpace(options.ClassToApplyToLastListItemInPager))
                listItemLinks.Last().AddCssClass(options.ClassToApplyToLastListItemInPager);

            //append classes to all list item links
            foreach (var li in listItemLinks)
                foreach (var c in options.LiElementClasses ?? Enumerable.Empty<string>())
                    li.AddCssClass(c);
        }

        //collapse all of the list items into one big string
        var listItemLinksString = listItemLinks.Aggregate(
            new StringBuilder(),
            (sb, listItem) => sb.Append(listItem.ToString()),
            sb=> sb.ToString()
            );

        var ul = new TagBuilder("ul")
                    {
                        InnerHtml = listItemLinksString
                    };
        foreach (var c in options.UlElementClasses ?? Enumerable.Empty<string>())
            ul.AddCssClass(c);

        var outerDiv = new TagBuilder("div");
        foreach(var c in options.ContainerDivClasses ?? Enumerable.Empty<string>())
            outerDiv.AddCssClass(c);
        outerDiv.InnerHtml = ul.ToString();

        return new MvcHtmlString(outerDiv.ToString());
    }

然后,重建代码并将dll复制到您的bin文件夹中。此后,您将发现省略号按钮已启用,并将您带到当前页码集的第一页之前的页面,或此当前集号之后的页面。我对此进行了测试,并成功了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Using automapper with PagedList.mvc

来自分类Dev

.NET MVC Linq分页与PagedList

来自分类Dev

PagedList MVC中的分页问题

来自分类Dev

省略号不起作用

来自分类Dev

使用PagedList.Mvc时出错

来自分类Dev

PagedList MVC不包含PagedListPager的定义

来自分类Dev

mvc3 pagedlist背景选择

来自分类Dev

PagedList在IE上不起作用,但在Chrome和Firefox上起作用

来自分类Dev

文字溢出省略号不起作用

来自分类Dev

反应-添加省略号字符不起作用

来自分类Dev

css。文本溢出不起作用:省略号

来自分类Dev

如何在PagedList.Mvc中具有多个PagedListRenderOptions?

来自分类Dev

C#PagedList MVC在分页中添加#anchor

来自分类Dev

PagedList.Mvc返回表中的所有记录

来自分类Dev

MVC pagedlist日期在第二页上失去价值

来自分类Dev

PagedList MVC仅显示大于当前页码的页码

来自分类Dev

使用视图模型时,如何在mvc中实现pagedlist?

来自分类Dev

使用PagedList.MVC时无法使用强类型视图

来自分类Dev

MVC PagedList 动态页面/页面大小由模型决定

来自分类Dev

当宽度设置为百分比时,CSS省略号不起作用

来自分类Dev

文字溢出:省略号在有限的显示行中不起作用

来自分类Dev

文本溢出:省略号在嵌套的flex容器中不起作用

来自分类Dev

为什么text-overflow:省略号在这里不起作用:

来自分类Dev

文本溢出:省略号在此元素上不起作用

来自分类Dev

CSS省略号在Bootstrap 3缩略图标题中不起作用

来自分类Dev

文本溢出省略号和flex在Firefox上不起作用

来自分类Dev

CSS文字溢出:省略号在V-chip上不起作用

来自分类Dev

为什么text-overflow:省略号在这里不起作用:

来自分类Dev

在我的情况下,文本溢出省略号不起作用

Related 相关文章

热门标签

归档