/// <summary> /// 分页 /// </summary> /// <typeparam name="TKey"></typeparam> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="where"></param> /// <param name="keySelector"></param> /// <param name="isAsc"></param> /// <returns></returns> public virtual PagingOutput <T> GetPageList <TKey>(int pageIndex, int pageSize, Expression <Func <T, bool> > where, Expression <Func <T, TKey> > keySelector = null, bool isAsc = true) { PagingOutput <T> output = new PagingOutput <T>() { PageIndex = pageIndex, PageSize = pageSize }; using (var dbContext = new DcContext()) { var query = dbContext.Set <T>().Where(where); output.Total = query.Count(); if (keySelector != null) { if (isAsc) { query = query.OrderBy(keySelector); } else { query = query.OrderByDescending(keySelector); } } output.Rows = query.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); } return(output); }
/// <summary> /// просмотр информации о ролях /// </summary> public ActionResult Index(int page = 1, int pageSize = 10) { var data = RoleManager.Roles; var total = data.Count(); var model = new PagingOutput <RoleInfo> { Data = data, CurrentPage = page, ItemsPerPage = pageSize, TotalItems = total }; return(View(model)); }
public IViewComponentResult Invoke(int page, int totalItems, int pageSize, string url, int maxPage = 10) { int totalPages = (int)Math.Ceiling((double)totalItems / pageSize); int pageFirst = 1; int pageLast = totalPages; int pageBack = page - 1; if (pageBack < 1) { pageBack = 1; } int pageNext = page + 1; if (pageNext > totalPages) { pageNext = totalPages; } string pageFirstUrl = string.Format(url, pageFirst); string pageLastUrl = string.Format(url, pageLast); string pageBackUrl = string.Format(url, pageBack); string pageNextUrl = string.Format(url, pageNext); PagingOutput output = new PagingOutput { Page = page, PageFirstUrl = pageFirstUrl, PageLastUrl = pageLastUrl, PageBackUrl = pageBackUrl, PageNextUrl = pageNextUrl }; ViewBag.PagingOutput = output; Dictionary <int, string> pageNumbers = new Dictionary <int, string>(); for (int i = 1; i <= totalPages; i++) { pageNumbers.Add(i, string.Format(url, i)); } return(View(pageNumbers)); }
/// <summary> /// Список /// </summary> /// <param name="page">страница</param> /// <param name="pageSize">количество элементов на странице</param> /// <returns>Список типов занятий</returns> public async Task <ViewResult> Index(int page = 1, int pageSize = 5) { var data = await _positionService.GetAllAsync(); var total = data.Count(); var model = new PagingOutput <Position> { Data = data, CurrentPage = page, ItemsPerPage = pageSize, TotalItems = total }; return(View(model)); }
/// <summary> /// Creates a GraphQL connection from a paging output object. /// </summary> /// <typeparam name="T">The model generic type parameter.</typeparam> /// <param name="pagingOutput">The paging output object.</param> /// <returns>The GraphQL connection.</returns> public static Connection <T> ToConnection <T>(this PagingOutput <T> pagingOutput) where T : BaseTimedObject { var edges = pagingOutput.Result.Select((status, i) => new Edge <T> { Node = status, Cursor = status.ID.ToString() }).ToList(); return(new Connection <T>() { Edges = edges, TotalCount = pagingOutput.TotalCount, PageInfo = new PageInfo { StartCursor = edges.FirstOrDefault()?.Cursor, EndCursor = edges.LastOrDefault()?.Cursor, HasPreviousPage = pagingOutput.HasPreviousPage, HasNextPage = pagingOutput.HasNextPage, } }); }