Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PagerModel"/> class.
        /// </summary>
        /// <param name="pageModel">The page model.</param>
        /// <param name="action">The action.</param>
        /// <param name="controller">The controller.</param>
        /// <param name="routeValues">The route values.</param>
        public PagerModel(IPagedModel pageModel, string action, string controller = null, object routeValues = null)
        {
            Controller = controller;
            _routeValues = new RouteValueDictionary(routeValues);
            _routeValues.Add(PageRouteConst, 0);
            Action = action;
            CurrentPage = pageModel.CurrentPage;
            PagesNumber = pageModel.PagesNumber;
            TotalCount = pageModel.Count;

            StartItemNumber = (pageModel.CurrentPage - 1)*pageModel.PageItems + 1;
            if (StartItemNumber < 0)
            {
                StartItemNumber = 0;
            }

            EndItemNumber = StartItemNumber + pageModel.PageItems - 1;
            if (EndItemNumber > TotalCount)
            {
                EndItemNumber = TotalCount;
            }

            if (StartItemNumber > EndItemNumber)
            {
                StartItemNumber = EndItemNumber;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PagerModel"/> class.
        /// </summary>
        /// <param name="pageModel">The page model.</param>
        /// <param name="action">The action.</param>
        /// <param name="controller">The controller.</param>
        /// <param name="routeValues">The route values.</param>
        public PagerModel(IPagedModel pageModel, string action, string controller = null, object routeValues = null)
        {
            Controller   = controller;
            _routeValues = new RouteValueDictionary(routeValues);
            _routeValues.Add(PageRouteConst, 0);
            Action      = action;
            CurrentPage = pageModel.CurrentPage;
            PagesNumber = pageModel.PagesNumber;
            TotalCount  = pageModel.Count;

            StartItemNumber = (pageModel.CurrentPage - 1) * pageModel.PageItems + 1;
            if (StartItemNumber < 0)
            {
                StartItemNumber = 0;
            }

            EndItemNumber = StartItemNumber + pageModel.PageItems - 1;
            if (EndItemNumber > TotalCount)
            {
                EndItemNumber = TotalCount;
            }

            if (StartItemNumber > EndItemNumber)
            {
                StartItemNumber = EndItemNumber;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// El helper utiliza bootsrap para dibujarse, ocupa un div de col-7
        /// </summary>
        /// <param name="html">Objeto helper</param>
        /// <param name="model">Modelo que implemente IPagedModel</param>
        /// <param name="actionName">Action al que debe ser redirigido</param>
        /// <param name="controllerName">Controller al que se debe redirigir</param>
        /// <returns></returns>
        public static IHtmlString Pager <T>(this HtmlHelper html, IPagedModel <T> model, string actionName, string controllerName)
        {
            var sb = new StringBuilder();

            var urlHelper = new UrlHelper(html.ViewContext.RequestContext);

            sb.Append(@"<div class='col-7'><nav aria-label='Pager'><ul class='pagination'>");

            if (model.CurrentPage != 1)
            {
                sb.Append(
                    $"<li class='page-item'><a class='page-link' href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage - 1, pageSize = model.PageSize })}'>Anterior</a></li>");
            }
            if (model.CurrentPage - 5 > 1)
            {
                sb.Append(
                    $"<li class='page-item'><a class='page-link href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage - 5, pageSize = model.PageSize })}'>-5</a></li>");
            }
            if (model.TotalPages > 5)
            {
                for (var i = model.CurrentPage; i <= model.CurrentPage + 5; i++)
                {
                    if (model.CurrentPage == i)
                    {
                        sb.Append(
                            $"<li class='page-item active'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>");
                    }
                    else
                    {
                        sb.Append(
                            $"<li class='page-item'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>");
                    }
                }
            }
            else
            {
                for (var i = 1; i <= model.TotalPages; i++)
                {
                    if (model.CurrentPage == i)
                    {
                        sb.Append(
                            $"<li class='page-item active'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>");
                    }
                    else
                    {
                        sb.Append(
                            $"<li class='page-item'><a href='{urlHelper.Action(actionName, controllerName, new { page = i, pageSize = model.PageSize })}' class='page-link'>{i}</a></li>");
                    }
                }
            }

            if (model.CurrentPage + 5 < model.TotalPages)
            {
                sb.Append($"<li class='page-item'><a class='page-link' href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage + 5, pageSize = model.PageSize })}'>+5</a></li>");
            }
            if (model.CurrentPage != model.TotalPages)
            {
                sb.Append(
                    $"<li class='page-item'><a class='page-link' href='{urlHelper.Action(actionName, controllerName, new { page = model.CurrentPage + 1, pageSize = model.PageSize })}'>Siguiente</a></li>");
            }


            sb.Append(
                "</ul></nav></div>");


            return(new MvcHtmlString(sb.ToString()));
        }
Exemplo n.º 4
0
 public static Task <List <TDestination> > ProjectToPagedListAsync <TDestination, TSource, TKey>(this IQueryable <TSource> queryable, Expression <Func <TSource, TKey> > keySelector, SortOrder sortOrder, IPagedModel request, IMapper mapper)
 => queryable.OrderBy(keySelector, sortOrder).ProjectToPagedListAsync <TDestination>(request, mapper);
Exemplo n.º 5
0
 public static Task <List <TDestination> > ProjectToPagedListAsync <TDestination>(this IQueryable queryable, IPagedModel request, IMapper mapper)
 => queryable.ProjectTo <TDestination>(mapper.ConfigurationProvider).DecompileAsync().ToPagedListAsync(request);
Exemplo n.º 6
0
 public static Task <List <T> > ToPagedListAsync <T>(this IQueryable <T> queryable, IPagedModel request)
 => queryable.ToPagedListAsync(request.PageNumber, request.PageSize);