コード例 #1
0
        public static IHtmlString AjaxPager <TModel, TValue>(this AjaxHelper <TModel> ajaxHelper, PagingHelper <TValue> model, string actionName, AjaxOptions ajaxOptions, string search, int PagerSize = 5)
        {
            if (model.TotalCount == 0)
            {
                return(new MvcHtmlString(""));
            }
            TagBuilder divPrev     = new TagBuilder("div");
            int        cGroupSize  = PagerSize;
            var        pageCount   = (int)Math.Ceiling(model.TotalCount / (double)model.PageSize);
            int        CurrentPage = model.CurrentPage;

            // cleanup any out bounds page number passed
            CurrentPage = Math.Max(CurrentPage, 1);
            CurrentPage = Math.Min(CurrentPage, pageCount);


            var urlHelper = new UrlHelper(ajaxHelper.ViewContext.RequestContext, ajaxHelper.RouteCollection);
            //var actionName = ajaxHelper.ViewContext.RouteData.GetRequiredString("Action");

            var lastGroupNumber = CurrentPage;

            while ((lastGroupNumber % cGroupSize != 0))
            {
                lastGroupNumber++;
            }
            var groupEnd   = Math.Min(lastGroupNumber, pageCount);
            var groupStart = lastGroupNumber - (cGroupSize - 1);



            // next
            if (CurrentPage < pageCount)
            {
                var routingValues = new RouteValueDictionary(new { page = (model.PageIndex + 1), Search = search });
                var next          = ajaxHelper.ActionLink("التالى", actionName, routingValues, ajaxOptions, new Dictionary <string, object> {
                    { "class", "next" }
                });
                divPrev.InnerHtml += next.ToString();
            }
            // next page
            if (pageCount > groupEnd)
            {
                var routingValues = new RouteValueDictionary(new { page = ((groupEnd + 1).ToString()), Search = search });
                var next          = ajaxHelper.ActionLink("...", actionName, routingValues, ajaxOptions, new Dictionary <string, object> {
                    { "class", "next-dots" }
                });
                divPrev.InnerHtml += next.ToString();
            }
            if (pageCount > 1)
            {
                for (var i = groupStart; i <= groupEnd; i++)
                {
                    var routingValues = new RouteValueDictionary(new { page = (i), Search = search });
                    var next          = ajaxHelper.ActionLink((i).ToString(), actionName, routingValues, ajaxOptions, new Dictionary <string, object> {
                        { "class", ((i == CurrentPage)) ? "selected-page" : "page" }
                    });
                    divPrev.InnerHtml += next.ToString();
                }
            }
            // prev page
            if (CurrentPage > cGroupSize)
            {
                var routingValues = new RouteValueDictionary(new { page = ((groupStart - cGroupSize).ToString()), Search = search });
                var next          = ajaxHelper.ActionLink("...", actionName, routingValues, ajaxOptions, new Dictionary <string, object> {
                    { "class", "previous-dots" }
                });
                divPrev.InnerHtml += next.ToString();
            }
            //prev
            if (CurrentPage > 1)
            {
                var routingValues = new RouteValueDictionary(new { page = (model.PageIndex - 1), Search = search });
                var next          = ajaxHelper.ActionLink("السابق", "GetData", routingValues, ajaxOptions, new Dictionary <string, object> {
                    { "class", "previous" }
                });
                divPrev.InnerHtml += next.ToString();
            }
            string output = divPrev.ToString();

            return(new MvcHtmlString(output));
        }
コード例 #2
0
        public static IHtmlString Pager <TModel, TValue>(this HtmlHelper <TModel> html, PagingHelper <TValue> model, int PagerSize = 5)
        {
            TagBuilder divPrev     = new TagBuilder("div");
            int        cGroupSize  = PagerSize;
            var        pageCount   = (int)Math.Ceiling(model.TotalCount / (double)model.PageSize);
            int        CurrentPage = model.CurrentPage;

            // cleanup any out bounds page number passed
            CurrentPage = Math.Max(CurrentPage, 1);
            CurrentPage = Math.Min(CurrentPage, pageCount);


            var urlHelper  = new UrlHelper(html.ViewContext.RequestContext, html.RouteCollection);
            var actionName = html.ViewContext.RouteData.GetRequiredString("Action");

            var lastGroupNumber = CurrentPage;

            while ((lastGroupNumber % cGroupSize != 0))
            {
                lastGroupNumber++;
            }
            var groupEnd   = Math.Min(lastGroupNumber, pageCount);
            var groupStart = lastGroupNumber - (cGroupSize - 1);

            // next
            if (CurrentPage < pageCount)
            {
                var next = new TagBuilder("a");
                next.SetInnerText("التالى");
                next.AddCssClass("next");
                var routingValues = new RouteValueDictionary(new { page = (model.PageIndex + 1) });
                next.MergeAttribute("href", urlHelper.Action(actionName, routingValues));
                divPrev.InnerHtml += next.ToString();
            }
            // next page
            if (pageCount > groupEnd)
            {
                var nextPage = new TagBuilder("a");
                nextPage.SetInnerText("...");
                nextPage.AddCssClass("next-dots");
                var routingValues = new RouteValueDictionary(new { page = ((groupEnd + 1).ToString()) });
                nextPage.MergeAttribute("href", urlHelper.Action(actionName, routingValues));
                divPrev.InnerHtml += nextPage.ToString();
            }
            if (pageCount > 1)
            {
                for (var i = groupStart; i <= groupEnd; i++)
                {
                    var pageNumber = new TagBuilder("a");
                    pageNumber.AddCssClass(((i == CurrentPage)) ? "selected-page" : "page");
                    pageNumber.SetInnerText((i).ToString());
                    var routingValues = new RouteValueDictionary(new { page = (i) });
                    pageNumber.MergeAttribute("href", urlHelper.Action(actionName, routingValues));
                    divPrev.InnerHtml += pageNumber.ToString();
                }
            }
            // prev page
            if (CurrentPage > cGroupSize)
            {
                var previousPage = new TagBuilder("a");
                previousPage.SetInnerText("...");
                previousPage.AddCssClass("previous-dots");
                var routingValues = new RouteValueDictionary(new { page = ((groupStart - cGroupSize).ToString()) });
                previousPage.MergeAttribute("href", urlHelper.Action(actionName, routingValues));
                divPrev.InnerHtml += previousPage.ToString();
            }
            //prev
            if (CurrentPage > 1)
            {
                var previous = new TagBuilder("a");
                previous.SetInnerText("السابق");
                previous.AddCssClass("previous");
                var routingValues = new RouteValueDictionary(new { page = (model.PageIndex - 1) });
                previous.MergeAttribute("href", urlHelper.Action(actionName, routingValues));
                divPrev.InnerHtml += previous.ToString();
            }
            string output = divPrev.ToString();

            return(new MvcHtmlString(output));
        }