public PaginatedList(List<T> items, int count, int pageIndex, int pageSize, ESortOrder eSortOrder) { PageIndex = pageIndex; TotalPages = (int)Math.Ceiling(count / (double)pageSize); StartPage = ((pageIndex - 1) / pageSize) * pageSize + 1; EndPage = StartPage + pageSize - 1; if (EndPage > TotalPages) { EndPage = TotalPages; } this.AddRange(items); }
public async Task <IActionResult> Index([FromQuery] string searchString, [FromQuery] ESortOrder sortOrder, [FromQuery] string currentFilter, [FromQuery] int?pageNumber) { if (searchString != null) { pageNumber = 1; } else { searchString = currentFilter; } ViewData["CurrentFilter"] = searchString; var boards = mDbContext.Boards.AsQueryable().AsNoTracking(); if (!string.IsNullOrEmpty(searchString)) { boards = boards.Where(s => s.Subject.Contains(searchString)); } IndexBoardViewModel indexBoardViewModel = new IndexBoardViewModel(); switch (sortOrder) { case ESortOrder.Name: boards = boards.OrderBy(s => s.UserName).ThenByDescending(s => s.ID); break; case ESortOrder.NameDesc: boards = boards.OrderByDescending(s => s.UserName).ThenByDescending(s => s.ID); break; default: boards = boards.OrderByDescending(s => s.ID); break; } indexBoardViewModel.SortOrder = sortOrder; indexBoardViewModel.Boards = await PaginatedList <Board> .CreateAsync(boards.AsNoTracking(), pageNumber ?? 1, PAGE_SIZE, sortOrder); return(View(indexBoardViewModel)); }
public OrderSettings(ESortOrder sortOrder, string propertyName) { SortOrder = sortOrder; var type = typeof(TSource); var attribute = type.GetCustomAttribute <SortableAttribute>(); if (attribute == null) { throw new Exception($"This type does not have {nameof(SortableAttribute)}"); } if (propertyName == null) { PropertyInfo defaultProperty = type.GetProperty(attribute.DefaultSortPropertyName); PropertyInfo = defaultProperty ?? throw new Exception($"Property {attribute.DefaultSortPropertyName} not found"); } else { PropertyInfo prop = type.GetProperty(propertyName); PropertyInfo = prop ?? throw new Exception($"Property {propertyName} not found"); } }
public static async Task<PaginatedList<T>> CreateAsync(IQueryable<T> source, int pageIndex, int pageSize, ESortOrder eSortOrder) { var count = await source.CountAsync(); var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync(); return new PaginatedList<T>(items, count, pageIndex, pageSize, eSortOrder); }
public OrderHandlerE(IEnumerable <TSource> source, ESortOrder sortOrder) { Source = source; SortOrder = sortOrder; }
public OrderHandlerQ(IQueryable <TSource> source, ESortOrder sortOrder) { Source = source; SortOrder = sortOrder; }