コード例 #1
0
        public async Task <IPagedList <Model> > GetModelsAsync(IPagination pagination, ISort sort, IFilter filter)
        {
            return(await modelRepository.GetPagedList(
                       (IQueryable <Model> query) =>
            {
                if (!String.IsNullOrEmpty(filter.FilterString))
                {
                    query = query.Where(
                        m => m.Name.Contains(filter.FilterString)
                        ||
                        m.Abrv.Contains(filter.FilterString)
                        ||
                        m.Make.Name.Contains(filter.FilterString)
                        );
                }

                switch (sort.Sorting)
                {
                case "NameDesc":
                    return query.OrderByDescending(o => o.Name);

                case "AbrvAsc":
                    return query.OrderBy(o => o.Abrv);

                case "AbrvDesc":
                    return query.OrderByDescending(o => o.Abrv);

                default:
                    return query.OrderBy(o => o.Name);
                }
            },
                       pagination
                       ));
        }
コード例 #2
0
        /// <summary>
        /// 读取记录总数
        /// </summary>
        private void LoadCount()
        {
            IPagination pagination = GetIPagination();

            pagination.SqlString = SqlString;



            var countsql = pagination.GetCountSql();



            object count = GetIDbHelper().ExecuteScalar(pagination.GetCountSql());

            if (count.GetType() == typeof(int))
            {
                _totalcount = (int)count;
            }
            else if (count.GetType() == typeof(decimal))
            {
                _totalcount = int.Parse(count.ToString());
            }
            else if (count.GetType() == typeof(long))
            {
                _totalcount = int.Parse(count.ToString());
            }
        }
コード例 #3
0
        public Task <IEnumerable <BlogPost> > FindPublishedBlogPostsAsync(IPagination pagination)
        {
            LogTo.Trace("FindPublishedBlogPostsAsync(pagination: {0})", pagination);

            // todo: implement proper async
            return(Task.FromResult(FindPublishedBlogPosts(pagination)));
        }
コード例 #4
0
        public override async Task WriteToStreamAsync(Type type,
                                                      object value,
                                                      Stream writeStream,
                                                      HttpContent content,
                                                      TransportContext transportContext,
                                                      CancellationToken cancellationToken)
        {
            var notSupportedMessage =
                $"The request using '{nameof(HateoasMediaTypeFormatter)}' does not have required Content-Type header '{SupportedMediaTypes.Last()}'.";

            if (!CheckSupportedContent(content))
            {
                throw new NotSupportedException(notSupportedMessage);
            }

            Resource resource = value switch
            {
                IPagination pagination => _resourceFactory.Create(pagination, type),
                IEnumerable enumerable => _resourceFactory.Create(enumerable, type),
                _ => _resourceFactory.Create(value, type)
            };
            var effectiveEncoding = SelectCharacterEncoding(content.Headers);
            var formattedResponse = _hateoasSerializer.SerializeResource(resource);
            var responseBytes     = effectiveEncoding.GetBytes(formattedResponse.ToCharArray());
            await writeStream.WriteAsync(responseBytes, 0, responseBytes.Length, cancellationToken);
        }
コード例 #5
0
 internal GetAllQuery(
     IPagination <uint, Filter> skip,
     IPagination <uint, Filter> limit)
 {
     this.skip  = skip;
     this.limit = limit;
 }
コード例 #6
0
        private IPagination GetPaginationConfig()
        {
            IPagination pagination = null;

            switch (PaginationParameterType)
            {
            case PaginationParameterType.PageNumber:
                pagination = new PageNumberPagination(PaginationParameterName, IsZeroIndexed, PageSizeParameterName);
                break;

            case PaginationParameterType.ItemOffset:
                pagination = new ItemOffsetPagination(PaginationParameterName, IsZeroIndexed, PageSizeParameterName, MaxRecordsParam);
                break;

            case PaginationParameterType.Token:
                pagination = new TokenPagination(PaginationParameterName, ResponseTokenName, PageSizeParameterName);
                break;

            case PaginationParameterType.NextPageUrl:
                pagination = new NextPageUrlPagination(ResponseTokenName, PageSizeParameterName);
                break;

            case PaginationParameterType.None:
            default:
                return(null);
            }

            pagination = GetSorting(pagination);
            return(pagination);
        }
コード例 #7
0
 public AuthorMongoDbConcrete(LibraryMongoDbContext context, IConvertDataHelper <AuthorMongoDb, Author> mDbDataConvert, IDataRequired <Author> dReqiered, IPagination <AuthorMongoDb> paging)
 {
     this.db = context;
     this.mongoDbDataConvert = mDbDataConvert;
     this.dataReqiered       = dReqiered;
     this.pagination         = paging;
 }
コード例 #8
0
        //
        // GET: /Analysis/Details/5

        public ActionResult Details(int id = 0)
        {
            analysis analysis = db.analyses.Find(id);

            if (analysis == null)
            {
                return(HttpNotFound());
            }
            if (Request.IsAjaxRequest())
            {
                ViewBag.Scans  = analysis.antivirus_scan.AsPagination(1, 1000000);
                ViewBag.Dns    = analysis.dns.AsPagination(1, 1000000);
                ViewBag.Images = analysis.result_file;
                ViewBag.Events = analysis.computer_event.AsPagination(1, 1000000);;
                return(PartialView("_Dynamic", analysis));
            }
            else
            {
                Mapper.Mapper      mapper = new Mapper.Mapper();
                IPagination <Info> infos  = mapper.HashMapper(analysis.file_detail).AsPagination(1, 100);
                ViewBag.Infos = infos;
                IPagination <import_function> imports = analysis.file_detail.pe_file.import_function.OrderBy(p => p.import_library.name).AsPagination(1, 1000000);
                ViewBag.Imports = imports;
                IPagination <export_function> exports = analysis.file_detail.pe_file.export_function.OrderBy(p => p.name).AsPagination(1, 1000000);
                ViewBag.Exports = exports;
                IPagination <resource> resources = analysis.file_detail.pe_file.resources.OrderBy(p => p.id).AsPagination(1, 1000000);
                ViewBag.Resources = resources;
                IPagination <section> sections = analysis.file_detail.pe_file.sections.OrderBy(p => p.id).AsPagination(1, 1000000);
                ViewBag.Section = sections;
                IPagination <miscellaneous> misc = analysis.miscellaneous.OrderBy(p => p.type).AsPagination(1, 1000000);
                ViewBag.Miscellaneous = misc;
                return(View(analysis));
            }
        }
コード例 #9
0
        /// <summary>
        /// Creates a new instance of the Pager class.
        /// </summary>
        /// <param name="pagination">The IPagination datasource</param>
        /// <param name="context">The view context</param>
        public Pager(IPagination pagination, ViewContext context)
        {
            _pagination  = pagination;
            _viewContext = context;

            _urlBuilder = CreateDefaultUrl;
        }
コード例 #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TicketCenterListViewModel"/> class.
 /// </summary>
 /// <param name="listName">Name of the list.</param>
 /// <param name="ticketsList">The tickets list.</param>
 /// <param name="serviceModel">The service model.</param>
 public TicketCenterListViewModel(string listName, IPagination <Ticket> ticketsList, SettingsService settings, ISecurityService security)
 {
     Tickets             = ticketsList;
     CurrentListSettings = settings.UserSettings.GetDisplayPreferences().GetPreferencesForList(listName);
     FilterBar           = new FilterBarViewModel(CurrentListSettings, security.GetTdStaffUsers(), security.GetTdSubmitterUsers());
     ListsForMenu        = settings.UserSettings.GetDisplayPreferences().TicketCenterListPreferences.OrderBy(lp => lp.ListMenuDisplayOrder).ToArray();
 }
コード例 #11
0
    /// <inheritdoc />
    public Task <IList <Message> > ThreadAsync(string threadId, IPagination settings = null, CancellationToken token = default(CancellationToken))
    {
        token.ThrowIfCancellationRequested();
        IQueryable <Message> queryable = Thread(threadId, settings);

        return(queryable.ToListAsync(token).As <List <Message>, IList <Message> >(token));
    }
コード例 #12
0
        public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context)
        {
            if (context.Object is SerializableError error)
            {
                var errorOutput = JsonSerializer.Serialize(error);
                context.HttpContext.Response.ContentType = SupportedMediaTypes.First();
                await context.HttpContext.Response.WriteAsync(errorOutput);

                return;
            }

            _resourceFactory ??= context.HttpContext.RequestServices.GetRequiredService <IResourceFactory>();
            _hateoasSerializer ??= context.HttpContext.RequestServices.GetRequiredService <IHateoasSerializer>();

            Resource resource = context.Object switch
            {
                IPagination pagination => _resourceFactory.Create(pagination, context.ObjectType),
                IEnumerable enumerable => _resourceFactory.Create(enumerable, context.ObjectType),
                _ => _resourceFactory.Create(context.Object, context.ObjectType)
            };
            var formattedResponse = _hateoasSerializer.SerializeResource(resource);

            context.HttpContext.Response.ContentType = SupportedMediaTypes.Last();
            await context.HttpContext.Response.WriteAsync(formattedResponse);
        }
    }
コード例 #13
0
 public AuthorPostgreSqlConcrete(LibraryPostgreSqlContext context, IConvertDataHelper <AuthorPostgreSql, Author> pSqlDataConvert, IDataRequired <Author> dReqiered, IPagination <AuthorPostgreSql> pagin)
 {
     this.db = context;
     this.PostgreSqlDataConvert = pSqlDataConvert;
     this.dataReqiered          = dReqiered;
     this.pagination            = pagin;
 }
コード例 #14
0
ファイル: Pager.cs プロジェクト: robkobobko/TicketDesk
		/// <summary>
		/// Creates a new instance of the Pager class.
		/// </summary>
		/// <param name="pagination">The IPagination datasource</param>
		/// <param name="context">The view context</param>
		public Pager(IPagination pagination, ViewContext context)
		{
			_pagination = pagination;
			_viewContext = context;

			_urlBuilder = CreateDefaultUrl;
		}
コード例 #15
0
        /// <summary>
        /// 选择查询
        /// </summary>
        /// <param name="pagingModel"></param>
        /// <returns></returns>
        public virtual ActionResult Query([ModelBinder(typeof(PagingModelBinder))] PagingModel pagingModel)
        {
            pagingModel.PageSize = 10;
            var    expression = LambdaHelper.BuildQueryCondition <T>(pagingModel);
            object lstData;

            if (pagingModel.QueryFields == "Code,Name") //TODO:不同的查询列表不同字段列表
            {
                IEnumerable <T> list = model.GetList(expression);

                //TODO: 直接使用IPagination<T>无法转换
                var data = Mapper.Map <IEnumerable <T>, IEnumerable <QueryViewModel> >(list)
                           .OrderBy(pagingModel.SortOptions.Column, pagingModel.SortOptions.Direction)
                           .AsPagination(pagingModel.PageIndex, pagingModel.PageSize, pagingModel.SortOptions);

                lstData = data;
            }
            else
            {
                IPagination <T> list = model.GetPagedList(pagingModel, expression);
                lstData = list;
            }

            ViewBag.Sort  = pagingModel.SortOptions;
            ViewBag.Query = pagingModel.Query;

            if (Request.HttpMethod == "GET")
            {
                return(PartialView("_Query", lstData));
            }

            //默认是PUT
            return(PartialView("Query", lstData));
        }
コード例 #16
0
 /// <summary>
 /// 执行一个以分页方式查找多项的命令模型。
 /// </summary>
 /// <typeparam name="TEntity">实体的数据类型。</typeparam>
 /// <param name="bus">命令总线。</param>
 /// <param name="page">分页的数据。</param>
 /// <param name="whereParameters">一个 WHERE 的条件参数。</param>
 /// <returns>返回一个实体的分页集合。</returns>
 public static GridData <TEntity> FindAllPage <TEntity>(this ICommandBus bus, IPagination page, WhereParameters whereParameters)
 {
     return(bus.Execute(new CMD.FindAllPage <TEntity>()
     {
         Page = page, WhereParameters = whereParameters
     }).ResultValue);
 }
コード例 #17
0
 public BookPostgreSqlConcrete(LibraryPostgreSqlContext context, IConvertDataHelper <BookPostgreSqlQueryResult, Book> pSqlDataConvert, IDataRequired <Book> dReqiered, IPagination <BookPostgreSqlQueryResult> pagin)
 {
     this.db = context;
     this.PostgreSqlDataConvert = pSqlDataConvert;
     this.dataReqiered          = dReqiered;
     this.pagination            = pagin;
 }
コード例 #18
0
        /// <summary>
        /// Creates a new instance of the Pager class.
        /// </summary>
        /// <param name="pagination">The IPagination datasource</param>
        /// <param name="context">The view context</param>
        public Pager(IPagination pagination, ControllerContext context)
        {
            pagination_  = pagination;
            viewContext_ = context;

            urlBuilder_ = CreateDefaultUrl;
        }
コード例 #19
0
    /// <inheritdoc />
    public async Task <IList <Message> > ListAsync(string userId, IPagination settings = null, CancellationToken token = default(CancellationToken))
    {
        token.ThrowIfCancellationRequested();
        IQueryable <Message> queryable = List(userId, settings);

        return(await queryable.ToListAsync(token));
    }
コード例 #20
0
        public EventViewerViewModel(IPagination<EventViewModel> events, string aggregateId)
        {
            Argument.ExpectNotNull(() => events);

            Events              = events;
            AggregateId         = aggregateId;
        }
コード例 #21
0
    /// <inheritdoc />
    public async Task <IList <Thread> > ThreadsAsync(string userId, IPagination settings = null, CancellationToken token = default(CancellationToken))
    {
        token.ThrowIfCancellationRequested();
        IQueryable <Thread> queryable = Threads(userId, settings);

        return(await queryable.ToListAsync(token).As <List <Thread>, IList <Thread> >(token));
    }
コード例 #22
0
        protected PagerBase(IPagination pagination, HttpRequestBase request)
        {
            this.pagination = pagination;
            this.request = request;

            UrlBuilder = CreateDefaultUrl;
        }
コード例 #23
0
 public BookMongoDbConcrete(LibraryMongoDbContext context, IConvertDataHelper <BookMongoDbQueryResult, Book> mDbDataConvert, IDataRequired <Book> dReqiered, IPagination <BookMongoDbQueryResult> paging)
 {
     this.db = context;
     this.mongoDbDataConvert = mDbDataConvert;
     this.dataReqiered       = dReqiered;
     this.pagination         = paging;
 }
コード例 #24
0
        public ActionResult Details(int id, [DefaultValue(1)] int page)
        {
            bool isConfirmed = false;

            ServiceViewModel service = _serviceRepo.GetServiceViewModelById(id);
            IQueryable <CommentViewModel> comments = _commentRepo.GetCommentViewModelByServiceId(service.ServiceId);

            //sprawdzam czy uslugodawca ma potwierdzone konto jesli tak to bedzie mogl przegladac komentarze
            ServiceProvider serviceProvider = _serviceProviderRepo.GetServiceProviderByUserId(User.Identity.GetUserId());

            if (serviceProvider != null && serviceProvider.IsConfirmed)
            {
                isConfirmed = true;
            }
            //sprawdzam czy uslugobiorca ma potwierdzone konto jesli tak to bedzie mogl przegladac komentarze
            Customer customer = _customerRepo.GetCustomerByUserId(User.Identity.GetUserId());

            if (customer != null && customer.IsConfirmed)
            {
                isConfirmed = true;
            }

            IPagination <CommentViewModel> commentList = comments.OrderBy("Date", SortDirection.Ascending).AsPagination(page, 5);

            ServiceCommentsViewModel serviceCommentsViewModel = new ServiceCommentsViewModel
            {
                Service          = service,
                CommentPagedList = commentList,
                ConfirmedUser    = isConfirmed
            };

            return(View(serviceCommentsViewModel));
        }
コード例 #25
0
 public Location(IPagination pagination)
 {
     _pagination = pagination;
     InitializeComponent();
     spNotEnoughSpace.Visibility = Visibility.Collapsed;
     GetFreeSpace();
 }
コード例 #26
0
 public PublicationConnection GetPublications(ContentNamespace ns, IPagination pagination,
                                              InputPublicationFilter filter, string customMetaFilter,
                                              IContextData contextData)
 =>
 _client.Execute <ContentQuery>(GraphQLRequests.Publications(ns, pagination, filter, customMetaFilter,
                                                             contextData,
                                                             GlobalContextDataInternal)).TypedResponseData.Publications;
コード例 #27
0
        public void Render(IGridModel <T> gridModel, IPagination <T> dataSource, TextWriter output, ViewContext context)
        {
            _writer    = output;
            GridModel  = gridModel;
            DataSource = dataSource;
            Context    = context;

            RenderGridStart();
            bool hasItems = RenderHeader();

            if (hasItems)
            {
                RenderItems();
            }
            else
            {
                RenderEmpty();
            }

            if (GridModel.ShowFooter && !IsDataSourceEmpty())
            {
                RenderFooter();
            }


            RenderGridEnd(!hasItems);
        }
コード例 #28
0
ファイル: Pager.cs プロジェクト: EagleFlyHigh/MvcContrib
        /// <summary>
        /// Creates a new instance of the Pager class.
        /// </summary>
        /// <param name="pagination">The IPagination datasource</param>
        /// <param name="request">The current HTTP Request</param>
        public Pager(IPagination pagination, HttpRequestBase request)
        {
            _pagination = pagination;
            _request = request;

            _urlBuilder = CreateDefaultUrl;
        }
コード例 #29
0
ファイル: Pager.cs プロジェクト: Exclr8/CloudCore
		/// <summary>
		/// Creates a new instance of the Pager class.
		/// </summary>
		/// <param name="pagination">The IPagination datasource</param>
		/// <param name="context">The view context</param>
		public Pager(IPagination pagination, ViewContext context, string pageQueryParam = "page")
		{
			_pagination = pagination;
			_viewContext = context;
            _pageQueryParam = pageQueryParam;
			_urlBuilder = CreateDefaultUrl;
		}
コード例 #30
0
ファイル: Pager.cs プロジェクト: zoeye/MvcContrib
        /// <summary>
        /// Creates a new instance of the Pager class.
        /// </summary>
        /// <param name="pagination">The IPagination datasource</param>
        /// <param name="request">The current HTTP Request</param>
        public Pager(IPagination pagination, HttpRequestBase request)
        {
            _pagination = pagination;
            _request    = request;

            _urlBuilder = CreateDefaultUrl;
        }
コード例 #31
0
        public static IGraphQLRequest ExecuteItemQuery(InputItemFilter filter, InputSortParam sort,
                                                       IPagination pagination, string customMetaFilter, ContentIncludeMode contentIncludeMode,
                                                       bool includeContainerItems,
                                                       IContextData contextData, IContextData globaContextData)
        {
            QueryBuilder builder = new QueryBuilder().WithQueryResource("ItemQuery", false);

            // We only include the fragments that will be required based on the item types in the
            // input item filter
            if (filter.ItemTypes != null)
            {
                string fragmentList = filter.ItemTypes.Select(itemType
                                                              => $"{Enum.GetName(typeof (ContentModel.FilterItemType), itemType).Capitialize()}Fields")
                                      .Aggregate(string.Empty, (current, fragment) => current + $"...{fragment}\n");
                // Just a quick and easy way to replace markers in our queries with vars here.
                builder.ReplaceTag("fragmentList", fragmentList);
                builder.LoadFragments();
            }

            return(builder.WithIncludeRegion("includeContainerItems", includeContainerItems).
                   WithPagination(pagination).
                   WithCustomMetaFilter(customMetaFilter).
                   WithContentIncludeMode(contentIncludeMode).
                   WithInputItemFilter(filter).
                   WithInputSortParam(sort).
                   WithContextData(contextData).
                   WithContextData(globaContextData).
                   WithConvertor(new ItemConvertor()).
                   Build());
        }
コード例 #32
0
        /// <summary>
        /// Returns the rightmost page number of the pagination, using the defined page span.
        /// </summary>
        /// <param name="pagination"></param>
        /// <returns></returns>
        public static int PageSpanTo(this IPagination pagination)
        {
            var result = pagination.Page + pagination.PageSpan;
            var total  = pagination.TotalPage();

            return((result > total) ? total : result);
        }
コード例 #33
0
 public PuzzleListViewModel(string pageTitle, IPagination<PuzzleDetailView> paginatedPuzzles, PuzzleSortType sortType, bool isLoggedIn, int currentUserId)
 {
     PaginatedPuzzles = paginatedPuzzles;
     SortType = sortType;
     IsLoggedIn = isLoggedIn;
     _pageTitle = pageTitle;
     CurrentUserId = currentUserId;
 }
コード例 #34
0
 public static T Map <T>(this IMappingEngine mapping, object source, IPagination pagination)
 {
     return(mapping.Map <T>(source, opts =>
     {
         opts.Items.Add("PageNumber", pagination.PageNumber);
         opts.Items.Add("PageSize", pagination.PageSize);
     }));
 }
コード例 #35
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TicketCenterListViewModel"/> class.
        /// </summary>
        /// <param name="listName">Name of the list.</param>
        /// <param name="ticketsList">The tickets list.</param>
        /// <param name="serviceModel">The service model.</param>
        public TicketCenterListViewModel(string listName, IPagination<Ticket> ticketsList, SettingsService settings, ISecurityService security)
        {
            Tickets = ticketsList;
            CurrentListSettings = settings.UserSettings.GetDisplayPreferences().GetPreferencesForList(listName);
            FilterBar = new FilterBarViewModel(CurrentListSettings, security.GetTdStaffUsers(), security.GetTdSubmitterUsers());
            ListsForMenu = settings.UserSettings.GetDisplayPreferences().TicketCenterListPreferences.OrderBy(lp => lp.ListMenuDisplayOrder).ToArray();

        }
コード例 #36
0
 public static Task NavigateToEndAsync <T>(this IPagination <T> @this)
 {
     if (@this == null)
     {
         throw new ArgumentNullException(nameof(@this));
     }
     return(@this.NavigateToAsync(@this.Count - 1));
 }
コード例 #37
0
        public PaginationResource Create(IPagination source, Type type)
        {
            var singleResources    = ToEnumerableOfResources(source.GetItems(), type);
            var paginationResource = new PaginationResource(singleResources, source.Count, source.PageSize, source.Page);

            BuildResourceLinks(paginationResource, source, type);
            return(paginationResource);
        }
コード例 #38
0
ファイル: Pager.cs プロジェクト: Jinlai/SSIGlass
        public Pager(IPagination pagination, HttpRequestBase request)
        {
            _pagination = pagination;
            _request = request;

            _urlBuilder = CreateDefaultUrl;
            _tagBuilder = CreateDefaultTag;
            _currentPageNumberBuilder = CreateDefaultCurrentPageNumber;
        }
コード例 #39
0
 public static string PageDropDown(this HtmlHelper html, IPagination pagedata)
 {
     HttpRequestBase _request = html.ViewContext.HttpContext.Request;
     StringBuilder builder = new StringBuilder();
     builder.Append("<div class='pagedropdown'>");
     builder.Append("Page <select>");
     for (int i = 1; i <= pagedata.TotalPages; i++)
     {
         builder.AppendFormat("<option value=\"{0}\"{1}>{0}</option>", i, (i == pagedata.PageNumber) ? " selected=\"true\"" : "");
     }
     builder.AppendFormat("</select> of {0}", pagedata.TotalPages);
     builder.Append("</div>");
     return builder.ToString();
 }
コード例 #40
0
ファイル: PaginationExtensions.cs プロジェクト: dpawatts/zeus
 /// <summary>
 /// Creates a new instance of the Pager class.
 /// </summary>
 /// <param name="pagination">The IPagination datasource</param>
 /// <param name="request">The current HTTP Request</param>
 public Pager(IPagination pagination, HttpRequestBase request)
 {
     _pagination = pagination;
     _request = request;
 }
コード例 #41
0
ファイル: Bootstrap.cs プロジェクト: AlexSugak/EComWithCQRS
 public BootPager(IPagination pagination, ViewContext context)
 {
     _grid = pagination;
     _context = context;
 }
コード例 #42
0
        public static string Pager(this HtmlHelper htmlHelper, IPagination pagination, string actionName, string controllerName, RouteValueDictionary routeValues)
        {
            routeValues = routeValues ?? new RouteValueDictionary();
            var routeValueDictionary = new RouteValueDictionary(routeValues);
            if(!routeValueDictionary.ContainsKey("page"))
                routeValueDictionary.Add("page", 0);

            if(!routeValueDictionary.ContainsKey("controller"))
                routeValueDictionary.Add("controller", controllerName);

            int min = Math.Max(pagination.PageNumber - 2, 1);
            int max = Math.Min(pagination.PageNumber + 2, pagination.TotalPages);

            int startPage = Math.Min(min, 1);
            int endPage = Math.Max(max, pagination.TotalPages);
            int currentPage = pagination.PageNumber;

            var sb = new StringBuilder();
            var sw = new StringWriter(sb, System.Globalization.CultureInfo.InvariantCulture);
            var hw = new Html32TextWriter(sw, "    ");

            hw.WriteFullBeginTag("ul");

            if (pagination.HasPreviousPage)
            {
                hw.WriteLine();
                hw.WriteFullBeginTag("li");
                routeValueDictionary["page"] = currentPage - 1;
                hw.Write(htmlHelper.ActionLink("prev", actionName, routeValueDictionary,
                                               new Dictionary<string, object> {{"class", "previous"}}));
                hw.WriteEndTag("li");
            }

            if(min != startPage)
            {
                hw.WriteLine();
                hw.WriteFullBeginTag("li");
                routeValueDictionary["page"] = startPage;
                hw.Write(htmlHelper.ActionLink(startPage.ToInvariantString(), actionName, routeValueDictionary));
                hw.WriteEndTag("li");

                if (min - startPage > 1)
                {
                    hw.WriteFullBeginTag("li");
                    hw.Write("...");
                    hw.WriteEndTag("li");
                }
            }

            for (var i = min; i <= max; i++)
            {
                hw.WriteLine();
                hw.WriteFullBeginTag("li");
                routeValueDictionary["page"] = i;
                if (i == currentPage)
                {
                    hw.WriteFullBeginTag("span");
                    hw.Write(i.ToInvariantString());
                    hw.WriteEndTag("span");
                }
                else
                    hw.Write(htmlHelper.ActionLink(i.ToInvariantString(), actionName, routeValueDictionary));

                hw.WriteEndTag("li");
            }

            if(max != endPage)
            {
                if (endPage - max > 1)
                {
                    hw.WriteLine();
                    hw.WriteFullBeginTag("li");
                    hw.Write("...");
                    hw.WriteEndTag("li");
                }

                hw.WriteLine();
                hw.WriteFullBeginTag("li");
                routeValueDictionary["page"] = endPage;
                hw.Write(htmlHelper.ActionLink(endPage.ToInvariantString(), actionName, routeValueDictionary));
                hw.WriteEndTag("li");
            }

            if(pagination.HasNextPage)
            {
                hw.WriteLine();
                hw.WriteFullBeginTag("li");
                routeValueDictionary["page"] = currentPage + 1;
                hw.Write(htmlHelper.ActionLink("next", actionName, routeValueDictionary,
                                               new Dictionary<string, object> {{"class", "next"}}));
                hw.WriteEndTag("li");
            }

            hw.WriteLine();
            hw.WriteEndTag("ul");
            return sb.ToString();

            //StringBuilder sb1 = new StringBuilder();

            //int seed = pagination.PageNumber % pagination.PageSize == 0 ? pagination.PageNumber : pagination.PageNumber - (pagination.PageNumber % pagination.PageSize);

            //if (pagination.PageNumber > 1)
            //    sb1.AppendLine(htmlHelper.ActionLink("prev", "index", controllerName, new { page = pagination.PageNumber }));// String.Format("<a href=\"{0}/{1}\">Previous</a>", urlPrefix, pagination.PageNumber));

            //if (pagination.PageNumber - pagination.PageSize >= 1)
            //{
            //    var pageNumber = (pagination.PageNumber - pagination.PageSize) + 1)
            //    sb1.AppendLine(htmlHelper.ActionLink("...", "index", controllerName, new {page = pageNumber}));
            //}
            //for (int i = seed; i < Math.Round((pagination.TotalItems / 10) + 0.5) && i < seed + pagination.PageSize; i++)
            //{
            //    //sb1.AppendLine(htmlHelper.ActionLink("{0}".ToFormat(i + 1)) String.Format("<a href=\"{0}/{1}\">{1}</a>", urlPrefix, i + 1));
            //}

            //if (pagination.PageNumber + pagination.PageSize <= (Math.Round((pagination.TotalItems / 10) + 0.5) - 1))
            //    sb1.AppendLine(String.Format("<a href=\"{0}/{1}\">...</a>", urlPrefix, (pagination.PageNumber + pagination.PageSize) + 1));

            //if (currentPage < (Math.Round((pagination.TotalItems / 10) + 0.5) - 1))
            //    sb1.AppendLine(String.Format("<a href=\"{0}/{1}\">Next</a>", urlPrefix, pagination.PageNumber + 2));

            //return sb1.ToString();

            //var pagesToDisplay = 5;

            //var sb = new StringBuilder();
            //var textWriter = new StringWriter(sb);
            //var builder = new HtmlTextWriter(textWriter);

            ////opening ul tag
            //builder.RenderBeginTag("ul");

            ////prev tag
            //builder.RenderBeginTag("li");
            //if (pagination.HasPreviousPage)
            //    builder.Write(urlHelper.ActionLink("prev", actionName, new{id = pagination.PageNumber - 1}));
            //else
            //    builder.WriteEncodedUrl("prev");
            //builder.RenderEndTag();

            ////R
            //builder.RenderBeginTag("li");
            //if(pag)

            ////next tag
            //builder.RenderBeginTag("li");
            //if (pagination.HasPreviousPage)
            //    builder.Write(urlHelper.ActionLink("next", actionName, new { id = pagination.LastItem }));
            //else
            //    builder.WriteEncodedUrl("next");
            //builder.RenderEndTag();

            ////close ul tag
            //builder.RenderEndTag();
            //return sb.ToString();
        }
コード例 #43
0
 public void Connect(IPagination pagination)
 {
     Pagination = pagination;
 }
コード例 #44
0
 public HomeIndexViewModel(IEnumerable<GenreEntity> categories, IPagination<CategoryTopicEntity> categoryTopics)
 {
     Categories = categories;
     CategoryTopics = categoryTopics;
 }
コード例 #45
0
 public ThemeListViewModel(string pageTitle, IPagination<Theme> paginatedThemes, ThemeSortType sortType)
 {
     PageTitle = pageTitle;
     PaginatedThemes = paginatedThemes;
     SortType = sortType;
 }
コード例 #46
0
ファイル: Header.cs プロジェクト: nbouilhol/bouilhol-lib
 public Header(IPagination pagination, ISearch search, Func<int, string, string> urlBuilder)
 {
     this.pagination = pagination;
     this.search = search;
     this.urlBuilder = urlBuilder;
 }
コード例 #47
0
        public ProductsListViewModel(IPagination<ProductList> products)
        {
            Argument.ExpectNotNull(() => products);

            Products = products;
        }
コード例 #48
0
ファイル: ExtendedPager.cs プロジェクト: ByteCarrot/Masslog
 public ExtendedPager(string container, IPagination pagination, ViewContext context)
     : base(pagination, context)
 {
     _container = container;
     _pagination = pagination;
 }
コード例 #49
0
ファイル: PaginationExtensions.cs プロジェクト: dpawatts/zeus
 public static Pager PagerPartShowing(this HtmlHelper helper, IPagination pagination)
 {
     return new Pager(pagination, helper.ViewContext.HttpContext.Request).ShowingOnly();
 }
コード例 #50
0
ファイル: EntityExtension.cs プロジェクト: alexyjian/ComBoost
 /// <summary>
 /// Get a html string of pagination size button.
 /// </summary>
 /// <param name="helper">A htmlhelper.</param>
 /// <param name="pagination">Entity view model.</param>
 public static MvcHtmlString PaginationButton(this HtmlHelper helper, IPagination pagination)
 {
     if (pagination == null)
         throw new ArgumentNullException("model");
     return helper.Partial("_PaginationButton", pagination);
 }
コード例 #51
0
ファイル: RestApiPage.xaml.cs プロジェクト: ridomin/waslibs
 private IPagination GetSorting(IPagination pagination)
 {
     var queryStringSortingPagination = pagination as IQueryStringSorting;
     if (queryStringSortingPagination != null)
     {
         if (!string.IsNullOrEmpty(OrderByParameterName) && !string.IsNullOrEmpty(OrderByParameterValue))
         {
             queryStringSortingPagination.OrderByParameterName = OrderByParameterName;
             queryStringSortingPagination.OrderByParameterValue = OrderByParameterValue;
         }
         if (!string.IsNullOrEmpty(OrderDirectionParameterName) && !string.IsNullOrEmpty(OrderDirectionParameterValue))
         {
             queryStringSortingPagination.OrderDirectionParameterName = OrderDirectionParameterName;
             queryStringSortingPagination.OrderDirectionParameterValue = OrderDirectionParameterValue;
         }
         return queryStringSortingPagination as IPagination;
     }           
     return pagination;
 }
コード例 #52
0
    	public ShopViewData WithSubscriptions(IPagination<MailingListSubscription> subscriptions)
    	{
			this.MailingListSubscriptions = subscriptions;
			return this;
    	}
コード例 #53
0
 /// <summary>
 /// Creates a pager component using the specified IPagination as the datasource.
 /// </summary>
 /// <param name="helper">The HTML Helper</param>
 /// <param name="pagination">The datasource</param>
 /// <returns>A Pager component</returns>
 public static Pager Pager(this HtmlHelper helper, IPagination pagination)
 {
     return new Pager(pagination, helper.ViewContext);
 }
コード例 #54
0
ファイル: Footer.cs プロジェクト: nbouilhol/bouilhol-lib
 public Footer(IPagination pagination, Func<int, string> urlBuilder)
 {
     this.pagination = pagination;
     this.urlBuilder = urlBuilder;
 }
コード例 #55
0
 public UserProfilePuzzleListViewModel(IPagination<UserProfilePuzzleViewModel> puzzles, PuzzleSortType sortType, int profileId)
 {
     Puzzles = puzzles;
     SortType = sortType;
     ProfileId = profileId;
 }
コード例 #56
0
 public UserProfileSolutionListViewModel(IPagination<SolutionProfile> solutions, SolutionSortType sortType, int profileId)
 {
     Solutions = solutions;
     SortType = sortType;
     ProfileId = profileId;
 }
コード例 #57
0
 public PagingHelper(IPagination pagination, HttpRequestBase request, bool onlyQueryStringInLinks = false) : base(pagination, request)
 {
     this.onlyQueryStringInLinks = onlyQueryStringInLinks;
 }
コード例 #58
0
 public UserProfileListViewModel(IPagination<UserInfoViewModel> users, PlayerSortType sortType)
 {
     Users = users;
     SortType = sortType;
 }