コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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");
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 public OrderHandlerE(IEnumerable <TSource> source, ESortOrder sortOrder)
 {
     Source    = source;
     SortOrder = sortOrder;
 }
コード例 #6
0
ファイル: OrderHandlerQ.cs プロジェクト: zmjack/TypeSharp
 public OrderHandlerQ(IQueryable <TSource> source, ESortOrder sortOrder)
 {
     Source    = source;
     SortOrder = sortOrder;
 }