示例#1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            _pager = new SessionData()
                .Get("sf_Example_Pager",
                     () => new Pager {TotalItems = 123, PageSize = 10});

            PagerControl1.Register(_pager);
        }
示例#2
0
        public async Task <IPager <State> > FindAll(IPager <State> pager)
        {
            CMDText = String.Format(FINDALLPAGER_STMT, pager.PageSize * pager.PageNbr, pager.PageSize);
            //CMDText += ORDERBY_STMT + OrderBy;
            MapToObject    = new StateMapToObject(logger);
            pager.Entities = await base.FindAll();

            CMDText        = FINDALLCOUNT_STMT;
            pager.RowCount = await base.FindAllCount();

            return(pager);
        }
示例#3
0
 /// <summary>
 /// 初始化排序
 /// </summary>
 public static void InitOrder <TEntity>(IQueryable <TEntity> source, IPager pager)
 {
     if (string.IsNullOrWhiteSpace(pager.Order) == false)
     {
         return;
     }
     if (source.Expression.SafeString().Contains(".OrderBy("))
     {
         return;
     }
     pager.Order = "Id";
 }
示例#4
0
        /// <summary>
        /// 初始化 <see cref="PaginalResult{T}"/> 类的新实例。
        /// </summary>
        /// <param name="data"></param>
        /// <param name="pager"></param>
        public PaginalResult(IEnumerable <T> data, IPager pager)
        {
            Data    = data;
            Succeed = true;

            if (pager != null)
            {
                Pages = pager.PageCount;
                Total = pager.RecordCount;
                IsEnd = pager.CurrentPageIndex >= pager.PageCount - 1;
            }
        }
 /// <summary>
 /// 初始化排序
 /// </summary>
 /// <typeparam name="TEntity">实体类型</typeparam>
 /// <param name="query">数据源</param>
 /// <param name="pager">分页对象</param>
 private static void InitOrder <TEntity>(this IQueryable <TEntity> query, IPager pager)
 {
     if (string.IsNullOrWhiteSpace(pager.Order) == false)
     {
         return;
     }
     if (query.Expression.SafeString().Contains(".OrderBy("))
     {
         return;
     }
     pager.Order = "Id";
 }
 public PagerModel(IPager pager)
 {
     CurrentPage = pager.CurrentPage;
     HasPreviousPage = pager.HasPreviousPage();
     HasNextPage = pager.HasNextPage();
     LastPage = pager.PageCount;
     Start = Math.Max(CurrentPage - Size, 2);
     SkippedLeft = (Start > 2);
     Stop = Math.Min(CurrentPage + Size, LastPage - 1);
     SkippedRight = (Stop < LastPage - 1);
     Length = Stop - Start + 1;
 }
        /// <summary>
        /// 验证
        /// </summary>
        /// <param name="pager">分页</param>
        public void Validate(IPager pager)
        {
            if (pager == null)
            {
                return;
            }

            if (_items.Count == 0)
            {
                throw new ArgumentException(LibraryResource.OrderIsEmptyForPage);
            }
        }
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            Control ctrlPagTop = this.LoadControl("/UserCOntrols/Pager.ascx");

            PAGTOP = ctrlPagTop as IPager;
            PAGTOP.BrowsableControl = this;
            PAGTOP.PageSize         = QuickParameters.PageSize;
            PAGTOP.CustomText       = TopPagerCustomText;
            PAGTOP.PagerBreak       = pagerBreak;
            ctrlPagTop.Visible      = topPagerVisible;
            PAGTOP.ItemNameSingular = GuiLanguage.GetGuiLanguage("DataObjectProduct").GetString("Product");
            PAGTOP.ItemNamePlural   = GuiLanguage.GetGuiLanguage("DataObjectProduct").GetString("Products");
            PhPagTop.Controls.Add(ctrlPagTop);

            Control ctrlPagBot = this.LoadControl("/UserCOntrols/Pager.ascx");

            PAGBOT                  = ctrlPagBot as IPager;
            PAGBOT.CustomText       = BottomPagerCustomText;
            ctrlPagBot.Visible      = bottomPagerVisible;
            PAGBOT.BrowsableControl = this;
            PAGBOT.PageSize         = QuickParameters.PageSize;
            PAGBOT.PagerBreak       = pagerBreak;
            PAGBOT.ItemNameSingular = GuiLanguage.GetGuiLanguage("DataObjectProduct").GetString("Product");
            PAGBOT.ItemNamePlural   = GuiLanguage.GetGuiLanguage("DataObjectProduct").GetString("Products");
            PhPagBot.Controls.Add(ctrlPagBot);


            if (RepeaterLayout == RepeatLayout.Table && itemsPerRow > 0)
            {
                this.OBJOVW.RepeatLayout    = RepeaterLayout;
                this.OBJOVW.RepeatColumns   = itemsPerRow;
                this.OBJOVW.ItemStyle.Width = new Unit((int)Math.Round(100.0f / (float)itemsPerRow, 0) + "%");
            }
            else
            {
                this.OBJOVW.RepeatLayout = RepeatLayout.Flow;
            }

            RestoreState();
            if (Request.RawUrl.ToLower().IndexOf(Constants.Links["LINK_TO_SITE_SEARCH"].Url.ToLower()) == -1)
            {
                FillOffersByTagTabs();
            }
            if ((PageType)Settings["ParentPageType"] == PageType.Overview)
            {
                ((IWidgetPageMaster)this.Page.Master).BreadCrumb.RenderOverviewPageBreadCrumbs(QuickParameters);
            }

            Reload();
            SaveState();
        }
 /// <summary>
 /// 转换为分页列表,包含排序分页操作
 /// </summary>
 /// <typeparam name="TEntity">实体类型</typeparam>
 /// <param name="query">数据源</param>
 /// <param name="pager">分页对象</param>
 /// <returns></returns>
 public static async Task <PagerList <TEntity> > ToPagerListAsync <TEntity>(this IQueryable <TEntity> query,
                                                                            IPager pager)
 {
     if (query == null)
     {
         throw new ArgumentNullException(nameof(query));
     }
     if (pager == null)
     {
         throw new ArgumentNullException(nameof(pager));
     }
     return(new PagerList <TEntity>(pager, await query.Page(pager).ToListAsync()));
 }
示例#10
0
 /// <summary>
 /// 克隆
 /// </summary>
 /// <param name="sqlBuilder">源生成器</param>
 protected void Clone(SqlBuilderBase sqlBuilder)
 {
     EntityMatedata    = sqlBuilder.EntityMatedata;
     _parameterManager = sqlBuilder._parameterManager?.Clone();
     EntityResolver    = sqlBuilder.EntityResolver ?? new EntityResolver(EntityMatedata);
     AliasRegister     = sqlBuilder.AliasRegister?.Clone() ?? new EntityAliasRegister();
     _selectClause     = sqlBuilder._selectClause?.Clone(this, AliasRegister);
     _fromClause       = sqlBuilder._fromClause?.Clone(AliasRegister);
     _joinClause       = sqlBuilder._joinClause?.Clone(this, AliasRegister);
     _whereClause      = sqlBuilder._whereClause?.Clone(AliasRegister, _parameterManager);
     _groupByClause    = sqlBuilder._groupByClause?.Clone(AliasRegister);
     _orderByClause    = sqlBuilder._orderByClause?.Clone(AliasRegister);
     _pager            = sqlBuilder._pager;
 }
示例#11
0
        public void TestGetPagesByOrder()
        {
            DataContext context = new DataContext("Database=test;Data Source=127.0.0.1;User Id=root;Password=1;pooling=true;CharSet=utf8;");
            IOrder      order   = new Order();

            order.Add("ID", OrderDirection.Desc);

            IPager <DbTable> pager = context.GetPages <DbTable>(1, 1, order);

            Assert.AreNotEqual(0, pager.Total);
            Assert.AreEqual(1, pager.CurrentPage);
            Assert.AreEqual(1, pager.PageNum);
            Assert.AreEqual(3, pager.TotalPage);
        }
示例#12
0
        protected string BuildAllSql(IPager pager, string orderBy = null)
        {
            var strOrderBy = " ORDER BY " + (!string.IsNullOrEmpty(orderBy) ? orderBy : DbSchema.Sort);

            // Get TotalCount First
            var countSql = $"SELECT COUNT(*) AS TotalCount FROM ({ViewerSql}) AS {DbSchema.Name}";

            pager.SetTotalCount(_dapper.ExecuteScalar <int>(countSql));

            // Get Query Result
            var innerSql = $"SELECT ROW_NUMBER() OVER({strOrderBy}) AS RowNo, * FROM ({ViewerSql}) AS {DbSchema.Name}";

            return($"SELECT * FROM ({innerSql}) AS t WHERE t.RowNo BETWEEN {pager.CurrentPage * pager.PagingSize + 1} AND {(pager.CurrentPage + 1) * pager.PagingSize}");
        }
示例#13
0
        public PagesController(IPager pager,
                               INavigator navigator)
        {
            if (pager == null)
            {
                throw new ArgumentNullException(nameof(pager));
            }
            if (navigator == null)
            {
                throw new ArgumentNullException(nameof(navigator));
            }

            _pager     = pager;
            _navigator = navigator;
        }
示例#14
0
        /// <summary>
        /// 计算总页数。
        /// </summary>
        /// <param name="dataPager">数据分页评估器。</param>
        private void CalculatePageCount(IPager dataPager)
        {
            var num = 0;

            if (dataPager.PageSize > 0)
            {
                num = dataPager.RecordCount / dataPager.PageSize;
                if ((num * dataPager.PageSize) < dataPager.RecordCount)
                {
                    num++;
                }
            }

            dataPager.PageCount = num;
        }
示例#15
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            Control ctrlPagTop = LoadControl("/UserControls/Pager.ascx");

            pagerTop = ctrlPagTop as IPager;
            pagerTop.BrowsableControl = this;
            pagerTop.PageSize         = QuickParameters.PageSize;
            pagerTop.CustomText       = TopPagerCustomText;
            pagerTop.PagerBreak       = pagerBreak;
            ctrlPagTop.Visible        = topPagerVisible;
            pagerTop.ItemNameSingular = GuiLanguage.GetGuiLanguage("DataObjectSurvey").GetString("Survey");
            pagerTop.ItemNamePlural   = GuiLanguage.GetGuiLanguage("DataObjectSurvey").GetString("Surveys");
            PhPagTop.Controls.Add(ctrlPagTop);

            Control ctrlPagBot = LoadControl("/UserControls/Pager.ascx");

            pagerBottom                  = ctrlPagBot as IPager;
            pagerBottom.CustomText       = BottomPagerCustomText;
            ctrlPagBot.Visible           = bottomPagerVisible;
            pagerBottom.BrowsableControl = this;
            pagerBottom.PageSize         = QuickParameters.PageSize;
            pagerBottom.PagerBreak       = pagerBreak;
            pagerBottom.ItemNameSingular = GuiLanguage.GetGuiLanguage("DataObjectSurvey").GetString("Survey");
            pagerBottom.ItemNamePlural   = GuiLanguage.GetGuiLanguage("DataObjectSurvey").GetString("Surveys");
            PhPagBot.Controls.Add(ctrlPagBot);

            if (RepeaterLayout == RepeatLayout.Table && itemsPerRow > 0)
            {
                OBJOVW.RepeatLayout    = RepeaterLayout;
                OBJOVW.RepeatColumns   = itemsPerRow;
                OBJOVW.ItemStyle.Width = new Unit((int)Math.Round(100.0f / itemsPerRow, 0) + "%");
            }
            else
            {
                OBJOVW.RepeatLayout = RepeatLayout.Flow;
            }


            RestoreState();
            if ((PageType)Settings["ParentPageType"] == PageType.Overview)
            {
                ((IWidgetPageMaster)Page.Master).BreadCrumb.RenderOverviewPageBreadCrumbs(QuickParameters);
            }

            Reload();
            SaveState();
        }
示例#16
0
        protected bool AggregatePager(IPager pager, out int?skip, out int?take)
        {
            var applyPager = false;

            skip = null;
            take = null;

            if ((pager.PageNumber.GetValueOrDefault(0) > 0) && (pager.PageSize.GetValueOrDefault(0) > 0))
            {
                applyPager = true;
                skip       = (pager.PageNumber.Value - 1) * pager.PageSize.Value;
                take       = pager.PageSize.Value;
            }

            return(applyPager);
        }
示例#17
0
        private static TagBuilder Page(int i, IPager pager, Func <int, string> generatePageUrl, PagerOptions pagerOptions)
        {
            var format           = string.Format(pagerOptions.TextToIndividualPages, i);
            var targetPageNumber = i;
            var page             = new TagBuilder("a");

            SetInnerText(page, format);
            page.AddCssClass(pagerOptions.PageClass);
            if (i == pager.CurrentPageIndex)
            {
                return(AddToListItem(page, pagerOptions, pagerOptions.ClassToLi + " " + pagerOptions.ClassToActiveLi));
            }

            page.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(AddToListItem(page, pagerOptions, null));
        }
示例#18
0
        public static async Task <IUserMessage> SendPaginatedMessageAsync <T1, T2>
        (
            this InteractiveService @this,
            [NotNull] SocketCommandContext context,
            [NotNull] UserFeedbackService feedback,
            [NotNull] IPager <T1, T2> pager,
            [CanBeNull] IMessageChannel channel = null,
            [CanBeNull] ICriterion <SocketReaction> criterion = null
        )
            where T2 : IPager <T1, T2>
        {
            var callback = new PaginatedCallback <T1, T2>(@this, feedback, context, pager, channel, criterion);
            await callback.DisplayAsync().ConfigureAwait(false);

            return(callback.Message);
        }
示例#19
0
        /// <summary>
        /// 转换为分页列表
        /// </summary>
        /// <typeparam name="TEntity">实体类型</typeparam>
        /// <param name="source">数据源</param>
        /// <param name="pager">分页对象</param>
        /// <returns></returns>
        public static async Task <PagerList <TEntity> > ToPagerListAsync <TEntity>(this IQueryable <TEntity> source,
                                                                                   IPager pager)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (pager == null)
            {
                throw new ArgumentNullException(nameof(pager));
            }
            var result = new PagerList <TEntity>(pager);

            result.AddRange(await source.ToListAsync());
            return(result);
        }
示例#20
0
        public Model2Sql Model2SQL <T>(IPager <T> pager, IQuery query, IOrder order)
        {
            if (pager == null)
            {
                throw new ArgumentException("pager不能为空");
            }
            if (order == null)
            {
                throw new ArgumentException("order不能为空");
            }
            CheckKey <T>();
            Model2Sql model = GetQuerySQL <T>(query);

            model.Sql = string.Format("SELECT {0} FROM {1} WHERE {2} ORDER BY {3} LIMIT {4},{5}", CreateQuery <T>(), ReflectionHelper.GetTypeName <T>(), model.Sql, GetOrderSQL <T>(order).Sql, (pager.CurrentPage - 1) * pager.PageNum, pager.PageNum);

            return(model);
        }
示例#21
0
        public async Task <IPaginationResult <ListItemModel> > GetPaginatedList(IPager pager)
        {
            var predicate = PredicateBuilder.New <Quiz>(true);

            if (!string.IsNullOrEmpty(pager.Search))
            {
                predicate.And(q => q.Name.Contains(pager.Search));
            }

            var data = await Unit.Quizzes.GetPaginatedList(pager, predicate, q => q.Name, OrderDirection.ASC);

            return(new PaginationResult <ListItemModel>
            {
                Items = Mapper.Map <List <ListItemModel> >(data.Items),
                Pager = data.Pager
            });
        }
示例#22
0
        private static TagBuilder Previous(IPager pager, Func <int, string> generatePageUrl, PagerOptions pagerOptions)
        {
            var targetPageNumber = pager.CurrentPageIndex - 1;
            var previous         = new TagBuilder("a");

            AppendHtml(previous, string.Format(pagerOptions.TextToPreviousPage, targetPageNumber));
            previous.Attributes["rel"] = "prev";
            previous.AddCssClass(pagerOptions.PageClass);

            if (!pager.HasPreviousPage)
            {
                return(AddToListItem(previous, pagerOptions, pagerOptions.ClassToLi + " disabled"));
            }

            previous.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(AddToListItem(previous, pagerOptions, pagerOptions.ClassToLi));
        }
示例#23
0
        private static TagBuilder Last(IPager pager, Func <int, string> generatePageUrl, PagerOptions pagerOptions)
        {
            var targetPageNumber = pager.TotalPageCount;
            var last             = new TagBuilder("a");

            AppendHtml(last, string.Format(pagerOptions.TextToLastPage, targetPageNumber));

            last.AddCssClass(pagerOptions.PageClass);

            if (pager.IsLastPage)
            {
                return(AddToListItem(last, pagerOptions, pagerOptions.ClassToLi + " disabled"));
            }

            last.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(AddToListItem(last, pagerOptions, pagerOptions.ClassToLi));
        }
示例#24
0
        private static TagBuilder First(IPager pager, Func <int, string> generatePageUrl, PagerOptions pagerOptions)
        {
            const int targetPageNumber = 1;
            var       first            = new TagBuilder("a");

            AppendHtml(first, string.Format(pagerOptions.TextToFirstPage, targetPageNumber));

            first.AddCssClass(pagerOptions.PageClass);

            if (pager.IsFirstPage)
            {
                return(AddToListItem(first, pagerOptions, pagerOptions.ClassToLi + " disabled"));
            }

            first.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(AddToListItem(first, pagerOptions, pagerOptions.ClassToLi));
        }
        public static ToolStrip ActAsPaginator(this ToolStrip toolStrip, IPager pager, Func <uint, IPager> page)
        {
            Action <ToolStripButton> move = b => {
                var pageIndex = Convert.ToInt32(b.Tag);
                if (pageIndex < 0)
                {
                    return;
                }

                pager = page((uint)pageIndex);
                toolStrip.UpdatePaginator(pager);
            };

            toolStrip.Items["Prev"].Click += (s, a) => move((ToolStripButton)s);
            toolStrip.Items["Next"].Click += (s, a) => move((ToolStripButton)s);

            if (pager != null)
            {
                toolStrip.UpdatePaginator(pager);
            }

            var form = toolStrip.Parent;

            if (form == null)
            {
                throw new Exception("У paginatora нет родителя, всего скорее ты нужно добавлять поведение позже");
            }

            var     controls = form.Controls.Cast <Control>().Flat(control => control.Controls.Cast <Control>());
            var     tables   = controls.Where(control => control is TableHost);
            Control table;

            if (tables.Count() > 1)
            {
                table = tables.Where(t => t.Tag != null).First(control => String.Compare(control.Tag.ToString(), TableName) == 0);
            }
            else
            {
                table = tables.First();
            }
            table.InputMap()
            .KeyDown(Keys.Left, () => move((ToolStripButton)toolStrip.Items["Prev"]))
            .KeyDown(Keys.Right, () => move((ToolStripButton)toolStrip.Items["Next"]));
            return(toolStrip);
        }
示例#26
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PaginatedCallback{T1, T2}"/> class.
 /// </summary>
 /// <param name="interactive">The interaction service.</param>
 /// <param name="feedbackService">The user feedback service.</param>
 /// <param name="sourceContext">The context to which the gallery belongs.</param>
 /// <param name="pager">The pages in the gallery.</param>
 /// <param name="targetChannel">The channel in which the gallery should be posted.</param>
 /// <param name="criterion">The criterion for reactions.</param>
 public PaginatedCallback
 (
     InteractiveService interactive,
     UserFeedbackService feedbackService,
     SocketCommandContext sourceContext,
     IPager <T1, T2> pager,
     [CanBeNull] IMessageChannel targetChannel         = null,
     [CanBeNull] ICriterion <SocketReaction> criterion = null
 )
 {
     this.Interactive = interactive;
     this.Feedback    = feedbackService;
     this.Context     = sourceContext;
     this.Criterion   = criterion ?? new EmptyCriterion <SocketReaction>();
     this.Pager       = pager;
     this.Channel     = targetChannel ?? this.Context.Channel;
     this.PageCount   = this.Pager.Pages.Count;
 }
示例#27
0
        private static TagBuilder Next(IPager pager, Func <int, string> generatePageUrl, PagerOptions pagerOptions)
        {
            var targetPageNumber = pager.CurrentPageIndex + 1;
            var next             = new TagBuilder("a");

            AppendHtml(next, string.Format(pagerOptions.TextToNextPage, targetPageNumber));
            next.Attributes["rel"] = "next";

            next.AddCssClass(pagerOptions.PageClass);

            if (!pager.HasNextPage)
            {
                return(AddToListItem(next, pagerOptions, pagerOptions.ClassToLi + " disabled"));
            }

            next.Attributes["href"] = generatePageUrl(targetPageNumber);
            return(AddToListItem(next, pagerOptions, pagerOptions.ClassToLi));
        }
 /// <summary>
 /// 复制Sql生成器
 /// </summary>
 /// <param name="sqlBuilder">源生成器</param>
 protected void Clone(SqlBuilderBase sqlBuilder)
 {
     EntityMatedata    = sqlBuilder.EntityMatedata;
     _parameterManager = sqlBuilder._parameterManager?.Clone();
     EntityResolver    = sqlBuilder.EntityResolver ?? new EntityResolver(EntityMatedata);
     AliasRegister     = sqlBuilder.AliasRegister?.Clone() ?? new EntityAliasRegister();
     _selectClause     = sqlBuilder._selectClause?.Clone(this, AliasRegister);
     _fromClause       = sqlBuilder._fromClause?.Clone(this, AliasRegister);
     _joinClause       = sqlBuilder._joinClause?.Clone(this, AliasRegister, _parameterManager);
     _whereClause      = sqlBuilder._whereClause?.Clone(this, AliasRegister, _parameterManager);
     _groupByClause    = sqlBuilder._groupByClause?.Clone(AliasRegister);
     _orderByClause    = sqlBuilder._orderByClause?.Clone(AliasRegister);
     Pager             = sqlBuilder.Pager;
     OffsetParam       = sqlBuilder.OffsetParam;
     LimitParam        = sqlBuilder.LimitParam;
     UnionItems        = sqlBuilder.UnionItems.Select(t => new BuilderItem(t.Name, t.Builder.Clone())).ToList();
     CteItems          = sqlBuilder.CteItems.Select(t => new BuilderItem(t.Name, t.Builder.Clone())).ToList();
 }
示例#29
0
        /// <summary>
        /// 分页查询,基础方法,参数:页面大小,页码,主键,查询字段,表达式,排序,数据总条数
        /// </summary>
        /// <param name="pageSize">页面大小</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="selectFields">查询字段</param>
        /// <param name="express">表达式</param>
        /// <param name="orderBy">排序</param>
        /// <param name="recordCount">数据总条数</param>
        /// <returns></returns>
        public List <TEntity> ExpressionSearch(int pageSize, int pageIndex, string selectFields, List <Expression> express, string orderBy, ref int recordCount)
        {
            //获取参数和条件
            CoreFrameworkEntity CoreFrameworkEntity = GetParaListAndWhere(express);

            //条件
            string where = CoreFrameworkEntity.Where;
            //参数列表
            List <SqlParameter> listPara = CoreFrameworkEntity.ParaList;

            selectFields = string.IsNullOrEmpty(selectFields) ? "*" : selectFields;//查询字段
            orderBy      = string.IsNullOrEmpty(orderBy) ? PrimaryKey : orderBy;

            IPager      page = Pager.Pager.getInstance();
            IDataReader sdr  = page.GetPagerInfo(TableName, selectFields, pageSize, pageIndex, where, orderBy, ref recordCount, listPara);

            return(DynamicBuilder <TEntity> .GetList(sdr, columnAttrList));
        }
示例#30
0
        public async Task <IActionResult> UserPost(int page, string username, string categoryName)
        {
            IPager <Post> model = null;

            if (username != null)
            {
                var user = await _userManager.FindByNameAsync(username);

                model = _repository.GetAll().Where(x => x.UserId == user.Id).Include(x => x.User).Include(x => x.Category).OrderByDescending(x => x.PublishDate).ToPagerList(page, 8);
            }
            else
            {
                var category = _categories.GetAll().Where(x => x.Name == categoryName).FirstOrDefault();
                model = _repository.GetAll().Where(x => x.CategoryId == category.Id).Include(x => x.User).Include(x => x.Category).OrderByDescending(x => x.PublishDate).ToPagerList(page, 8);
                ViewBag.isCategoryPosts = true;
            }
            ViewBag.isUserPosts = true;
            return(View("Index", model));
        }
示例#31
0
        public PagedList(IQueryable <T> items, IPager pager)
        {
            if (pager.TotalCount == 0)
            {
                pager.TotalCount = items.Count();
            }
            if (pager.PageIndex == 0)
            {
                pager.PageIndex = 1;
            }
            if (pager.PageSize == 0)
            {
                pager.PageSize = 10;
            }
            this.Pager = pager;
            var filtered = items.Skip((Pager.PageIndex - 1) * Pager.PageSize).Take(Pager.PageSize);

            AddRange(filtered);
        }
示例#32
0
        public async Task <IActionResult> Index()
        {
            ProjectRepository projectRepo;
            IPager <Project>  pager = null;

            try
            {
                using (DBConnection dbc = new DBConnection(settings.Database.ConnectionString, logger))
                {
                    projectRepo = new ProjectRepository(settings, logger, dbc);
                    pager       = await projectRepo.FindAllView(new Pager <Project>() { PageNbr = 0, PageSize = 20 });
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
            }

            return(View(pager));
        }
示例#33
0
        public static MvcHtmlString PageLinks(this HtmlHelper html, IPager pager, Func<int, string> pageUrl)
        {
            StringBuilder result = new StringBuilder();

            for (int i = 1; i <= pager.TotalPages; i++)
            {
                TagBuilder li = new TagBuilder("li");

                TagBuilder tag = new TagBuilder("a");
                tag.MergeAttribute("href", pageUrl(i));
                tag.InnerHtml = i.ToString();

                if (i == pager.CurrentPage)
                    li.AddCssClass("active");
                li.InnerHtml = tag.ToString();
                result.Append(li.ToString());
            }

            return MvcHtmlString.Create(result.ToString());
        }
示例#34
0
        public RC CloseStatement(IPager.SAVEPOINT op)
        {
            Context ctx = Ctx;
            RC rc = RC.OK;

            // If statementID is greater than zero, then this Vdbe opened a statement transaction that should be closed here. The only exception
            // is that an IO error may have occurred, causing an emergency rollback. In this case (db->nStatement==0), and there is nothing to do.
            if (ctx.Statements != 0 && StatementID != 0)
            {
                int savepoint = StatementID - 1;

                Debug.Assert(op == IPager.SAVEPOINT.ROLLBACK || op == IPager.SAVEPOINT.RELEASE);
                Debug.Assert(ctx.Statements > 0);
                Debug.Assert(StatementID == (ctx.Statements + ctx.SavepointsLength));

                for (int i = 0; i < ctx.DBs.length; i++)
                {
                    RC rc2 = RC.OK;
                    Btree bt = ctx.DBs[i].Bt;
                    if (bt != null)
                    {
                        if (op == IPager.SAVEPOINT.ROLLBACK)
                            rc2 = bt.Savepoint(IPager.SAVEPOINT.ROLLBACK, savepoint);
                        if (rc2 == RC.OK)
                            rc2 = bt.Savepoint(IPager.SAVEPOINT.RELEASE, savepoint);
                        if (rc == RC.OK)
                            rc = rc2;
                    }
                }
                ctx.Statements--;
                StatementID = 0;

                if (rc == RC.OK)
                {
                    if (op == IPager.SAVEPOINT.ROLLBACK)
                        rc = VTable.Savepoint(ctx, IPager.SAVEPOINT.ROLLBACK, savepoint);
                    if (rc == RC.OK)
                        rc = VTable.Savepoint(ctx, IPager.SAVEPOINT.RELEASE, savepoint);
                }

                // If the statement transaction is being rolled back, also restore the database handles deferred constraint counter to the value it had when 
                // the statement transaction was opened.
                if (op == IPager.SAVEPOINT.ROLLBACK)
                    ctx.DeferredCons = StmtDefCons;
            }
            return rc;
        }
示例#35
0
文件: Btree.cs 项目: BclEx/GpuStructs
        public RC Savepoint(IPager.SAVEPOINT op, int savepoints)
        {
            var rc = RC.OK;
            if (InTrans == TRANS.WRITE)
            {
                BtShared bt = Bt;
                Debug.Assert(op == IPager.SAVEPOINT.RELEASE || op == IPager.SAVEPOINT.ROLLBACK);
                Debug.Assert(savepoints >= 0 || (savepoints == -1 && op == IPager.SAVEPOINT.ROLLBACK));
                Enter();
                rc = bt.Pager.Savepoint(op, savepoints);
                if (rc == RC.OK)
                {
                    if (savepoints < 0 && (bt.BtsFlags & BTS.INITIALLY_EMPTY) != 0)
                        bt.Pages = 0;
                    rc = newDatabase(bt);
                    bt.Pages = ConvertEx.Get4(bt.Page1.Data, 28);

                    // The database size was written into the offset 28 of the header when the transaction started, so we know that the value at offset
                    // 28 is nonzero.
                    Debug.Assert(bt.Pages > 0);
                }
                Leave();
            }
            return rc;
        }
示例#36
0
 /// <summary>
 /// 设置分页
 /// </summary>
 /// <param name="pager">分页对象</param>
 public ISqlBuilder SetPager( IPager pager ) {
     Pager = pager;
     if ( !pager.Order.IsEmpty() )
         Order = pager.Order;
     return this;
 }
 public void TestSetup()
 {
     pager = PagerFactory.CreateExport().Value;
 }
示例#38
0
 public void SetUp()
 {
     _pager = new Pager {TotalItems = 1337, PageSize = 10};
 }
示例#39
0
 public void Register(IPager pager)
 {
     _pager = pager;
     CreateChildControls();
 }