using System.Linq; namespace Kit.Helpers.Repository.Paging { /// /// Фильтр с полями постраничной фильтрации. /// Применяется, например в PagingController /// public class PagingByPage : IPageFilter { public int? Start { get; set; } public int? Lenght { get; set; } public string SortColumnName { get; set; } public string SortDirection { get; set; } public string Tabs { get; set; } public string pageParameterId { get; set; } /// /// Номер страницы. Нумерация с 1-цы /// public int? PageNo { get; set; } public int? PageSize { get; set; } public int? TotalRows { get; set; } public int? CountPages { get; set; } /// /// Есть значения для разбиения на страницы /// public bool HasSize { get { return this.PageNo.HasValue && (this.PageNo > 0) && this.PageSize.HasValue && (this.PageSize > 0); } } public string FormId { get { return _formId; } set { _formId = value; } } public IQueryable ChangePage(IQueryable query) { if (query == null) return null; if (!(this.PageNo.HasValue && this.PageSize.HasValue)) return query; return query.Skip((this.PageNo.Value - 1) * this.PageSize.Value).Take(this.PageSize.Value); } #region Fields --------------------------------------- /// /// Для передачи в частичное представление Id формы, которая владеет просмотром страниц /// private string _formId = ""; #endregion } }