예제 #1
0
        private List <ILink> _GenerateLinks(int currentPage, IPagingConfig config)
        {
            List <ILink> pages = new List <ILink>();

            if (config.ShowNavigations)
            {
                if (!(config.HidePrevOnFirstPage && currentPage == 1))
                {
                    var link = _Services.GetService <IPrevLink>();
                    link.PageNum = currentPage - 1 <= 0 ? 0 : currentPage - 1;
                    pages.Add(link);
                }
            }

            for (int i = 0; i < TotalPages; i++)
            {
                var link = _Services.GetService <ILink>();
                link.PageNum = i + 1;
                pages.Add(link);
            }
            if (config.ShowNavigations)
            {
                if (!(config.HideNextOnLastPage && currentPage == TotalPages))
                {
                    var link = _Services.GetService <INextLink>();
                    link.PageNum = currentPage == TotalPages ? 0 : currentPage + 1;
                    pages.Add(link);
                }
            }

            return(pages);
        }
예제 #2
0
        public IHtmlContent RenderPagination(int total, int perPage, IPagingConfig config)
        {
            if (config.DoNotRenderForOnePage && total <= perPage)
            {
                return(new HtmlString(string.Empty));
            }
            TotalItems   = total;
            ItemsPerPage = perPage;
            StringBuilder sb = new StringBuilder();

            sb.Append(config.PaginationWrapperStart);
            _GenerateLinks(_State.CurrentPage, config).ForEach(x => sb.Append(x.Render(config)));
            sb.Append(config.PaginationWrapperEnd);
            return(new HtmlString(sb.ToString()));
        }
예제 #3
0
        public virtual string Render(IPagingConfig config)
        {
            StringBuilder sb          = new StringBuilder();
            var           queryString = _State.BuildPaginationQueryString(config.PageKey, PageNum);

            sb.Append(_State.IsCurrentPage(PageNum) ? config.ActiveLinkWrapperStart : config.LinkWrapperStart);
            sb.Append($"<a id='page_link_{PageNum}'");
            sb.Append($" name='page_link_{PageNum}' ");
            sb.Append($" class='{config.LinkClass}' ");
            sb.Append($" href='{ (_State.IsCurrentPage(PageNum) ? "#" : "?" + queryString)}' ");
            sb.Append(">");
            sb.Append(Text ?? PageNum.ToString());
            sb.Append("</a>");
            sb.Append(config.LinkWrapperEnd);
            return(sb.ToString());
        }
예제 #4
0
        public virtual string Render(IPagingConfig config)
        {
            StringBuilder sb      = new StringBuilder();
            var           qString = PageNum != 0 ? "?" + _State.BuildPaginationQueryString(config.PageKey, PageNum) : "#";

            sb.Append(PageNum == 0 ? config.DisabledLinkWrapperStart : config.LinkWrapperStart);
            sb.Append($"<a id='page_link_{PageNum}'");
            sb.Append($" name='page_link_{PageNum}' ");
            sb.Append($" class='{config.LinkClass}' ");
            sb.Append($" href='{ qString}' ");
            sb.Append(">");
            sb.Append(Text ?? PageNum.ToString());
            sb.Append("</a>");
            sb.Append(config.LinkWrapperEnd);
            return(sb.ToString());
        }
예제 #5
0
        public static IHtmlContent RenderPagination(this IHtmlHelper html, int totalItems, int itemsPerPage, IPagingConfig config)
        {
            var pager = (IPager)html.ViewContext.HttpContext.RequestServices.GetService(typeof(IPager));

            return(pager.RenderPagination(totalItems, itemsPerPage, config));
        }
예제 #6
0
 public override string Render(IPagingConfig config)
 {
     this.Text = config.PrevNavitionText;
     return(base.Render(config));
 }
 public PagingState(IPagingConfig config, IHttpContextAccessor contextAccessor)
 {
     _Config          = config;
     _ContextAccessor = contextAccessor;
 }