public ActionResult Index(GridSortOptions sort, int?page) { ViewBag.GagesGrid = PreparationGageGrid(sort, page); ViewBag.ExpirationOfVerification = ExpirationOfVerification(); return(View()); }
/// <summary> /// 水质管理"searchString", ViewBag.search /// </summary> /// <returns></returns> public ActionResult waterquality(int?page, string searchString, GridSortOptions model) { var c = new ecoBioWmsContext(); ViewBag.model = model; ViewBag.page = page; ViewBag.search = searchString; ViewBag.Column = ""; ViewBag.Direction = ""; //IEnumerable<DataManualCollection> list = (IEnumerable<DataManualCollection>)from s in c.DataManualCollections orderby s.manual_collection_sn descending select s; //if (!String.IsNullOrEmpty(searchString)) //{ // double v = Convert.ToDouble(searchString); // list = list.Where(p => p.manual_collection_value == v); // ViewBag.search = searchString; //} //if (!string.IsNullOrEmpty(model.Column)) //{ // ViewBag.Column = model.Column; // ViewBag.Direction = model.Direction; // list = list.OrderBy(model.Column, model.Direction); //} //list = list.AsPagination(page ?? 1, 5); //return View(list); return(View()); }
GetHistory(long clientId, ClientAccountActionModel accountFilters, PageSortOptions pageSortOptions) { var accountHistoryList = ClientAccountRepo.GetClientAccountHistoryProjected(clientId) .AsFiltered(accountFilters) .AsPagination(pageSortOptions); var accountHistoryViewFilterContainer = new AccountHistoryFilterContainer() { VersionDate = accountFilters.VersionDate, ManagerName = accountFilters.ManagerName, RealClientName = accountFilters.RealClientName, OperationalClientName = accountFilters.OperationalClientName, MoneyVolume = accountFilters.MoneyVolume, QuickCost = accountFilters.QuickCost, TargetAccountOrganizationName = accountFilters.TargetAccountOrganizationName }; var gridSortOptions = new GridSortOptions { Column = pageSortOptions.Column, Direction = pageSortOptions.Direction }; var accountHistoryListContainer = new ListContainerModel <ClientAccountActionModel, AccountHistoryFilterContainer>() { PagedList = accountHistoryList, FilterContainer = accountHistoryViewFilterContainer, GridSortOptions = gridSortOptions }; return(accountHistoryListContainer); }
public static HtmlString HiddenGridOptions(this HtmlHelper html, GridSortOptions gridOptions) { var column = html.Hidden("Column", gridOptions.Column, new { @id = "bcms-grid-sort-column" }); var direction = html.Hidden("Direction", gridOptions.Direction, new { @id = "bcms-grid-sort-direction" }); return(new HtmlString(string.Concat(column.ToString(), direction.ToString()))); }
public ActionResult SelectedSamples(GridSortOptions sort, int?page) { var selectedSamples = _dataManager.SelectedSamples.GetSelectedSamples(); var samplesForGrid = new List <SelectedSamplesOutViewModel>(); foreach (var selectedSample in selectedSamples) { Sample sample = _dataManager.Samples.GetSampleByNumber(selectedSample.RegistrationNumber); var sampleForGrid = new SelectedSamplesOutViewModel { RegistrationNumber = selectedSample.RegistrationNumber, SampleName = sample.Name, Applicant = sample.Applicant, SamplingDate = selectedSample.SamplingDate }; samplesForGrid.Add(sampleForGrid); } IEnumerable <SelectedSamplesOutViewModel> gridModel; if (sort.Column != null) { gridModel = samplesForGrid.OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, 30); } else { gridModel = samplesForGrid.OrderBy("SamplingDate", SortDirection.Descending).AsPagination(page ?? 1, 30); } ViewBag.Sort = sort; return(View(gridModel)); }
private ListContainerModel <ClientModel, ClientsFilterContainer> GetClientsList(ClientModel clientFilters, PageSortOptions pageSortOptions) { string loginToSearch = (clientFilters.Login ?? new List <string>()).FirstOrDefault(); var clientPagedList = ClientRepo.GetClientsProjected(loginToSearch).AsFiltered(clientFilters) .AsPagination(pageSortOptions); var clientViewFilterContainer = new ClientsFilterContainer() { Login = loginToSearch, IsDealler = clientFilters.IsDealler, OrganizationName = clientFilters.OrganizationName, Status = clientFilters.Status, }; var gridSortOptions = new GridSortOptions { Column = pageSortOptions.Column, Direction = pageSortOptions.Direction }; var clientListContainer = new ListContainerModel <ClientModel, ClientsFilterContainer>() { PagedList = clientPagedList, FilterContainer = clientViewFilterContainer, GridSortOptions = gridSortOptions }; return(clientListContainer); }
private ListContainerModel <AddressModel, AddressFilterContainer> GetAddressList(AddressModel addressFilters, PageSortOptions pageSortOptions) { var addressPagedList = AddressRepo.GetAdressesProjected().AsFiltered(addressFilters).AsPagination(pageSortOptions); var addressViewFilterContainer = new AddressFilterContainer() { LastName = addressFilters.LastName, MobilePhone = addressFilters.MobilePhone, City = addressFilters.City, Sex = addressFilters.Sex }; var gridSortOptions = new GridSortOptions { Column = pageSortOptions.Column, Direction = pageSortOptions.Direction }; var clientListContainer = new ListContainerModel <AddressModel, AddressFilterContainer>() { PagedList = addressPagedList, FilterContainer = addressViewFilterContainer, GridSortOptions = gridSortOptions }; return(clientListContainer); }
public ActionResult Index(GridSortOptions sort, int?page) { var directions = _dataManager.Directions.GetNotCompletedDirectionsByDepartment("токсикология"); var directionsForGrid = new List <DirectionToResearchViewModel>(); foreach (var direction in directions) { Sample sample = _dataManager.Samples.GetSampleByNumber(direction.SampleId); var directionForGrid = new DirectionToResearchViewModel { SampleId = direction.SampleId, SampleName = sample.Name, DirectionDate = direction.DirectionDate, Applicant = sample.Applicant }; directionsForGrid.Add(directionForGrid); } IEnumerable <DirectionToResearchViewModel> gridModel; if (sort.Column != null) { gridModel = directionsForGrid.OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, 30); } else { gridModel = directionsForGrid.OrderBy("DirectionDate", SortDirection.Descending).AsPagination(page ?? 1, 30); } ViewBag.Sort = sort; return(View(gridModel)); }
//Подготовка списка средств измерения для вывода на страницу (извлечение из репозитория, сортировка) private IEnumerable <GageGridViewModel> PreparationGageGrid(GridSortOptions sort, int?page) { IEnumerable <Gage> allGages = dataManager.Gages.GetGages(); var gagesGridViewModel = new List <GageGridViewModel>(); foreach (Gage gage in allGages) { var gageForGrid = new GageGridViewModel { GageId = gage.Id, GageName = gage.Name, SerialNumber = gage.SerialNumber, State = gage.State }; IEnumerable <Certificate> certificates = dataManager.Certificates.GetCertificatesByGageId(gage.Id); if (certificates != null && certificates.Any()) { gageForGrid.EndVerification = certificates.Max(x => x.EndVerificationDate).ToShortDateString(); } else { gageForGrid.EndVerification = "не поверен"; } gagesGridViewModel.Add(gageForGrid); } IEnumerable <GageGridViewModel> model = gagesGridViewModel.OrderBy(sort.Column, sort.Direction); ViewBag.Sort = sort; return(model); }
public ActionResult NotScanned(NotScannedModel.DistributorUpdateSearchModel search, int page = 1, int pageSize = 10, GridSortOptions sort = null) { var model = new NotScannedModel(); if (search.StartDate == DateTime.MinValue) { search.StartDate = DateTime.Now.AddDays(-7); } if (search.EndDate == DateTime.MinValue) { search.EndDate = DateTime.Now; } // Search criteria model.AllDistributorUpdateTypes = _distributorService.GetAllDistributorUpdateTypeNames().Select(x => new SelectListItem() { Text = x, Value = x }).ToList().InsertEmptyValue(); model.AllWarehouses = WebUtility.ConvertDictionaryToSelectList(_warehouseService.GetAllWarehouses(), true); model.Search = search; if (Request.QueryString.HasKeys()) { // Set profile box data if (sort == null || string.IsNullOrEmpty(sort.Column)) { sort = new GridSortOptions() { Column = "DistNumber", Direction = SortDirection.Ascending } } ; ViewBag.Sort = sort; var boxes = _distributorService.SearchDistributorUpdates( new DistributorUpdateSearchCriteria { StartDate = CommonHelper.GetStartOfDate(search.StartDate), EndDate = CommonHelper.GetEndOfDate(search.EndDate), Statuses = new[] { (short)DistributorUpdateStatus.NotCompleted }, WarehouseId = search.WarehouseId, UpdateType = search.UpdateType }, page, pageSize, sort.Column, WebUtility.GetSortDir(sort)); model.DistributorUpdates = boxes.Select(x => x.ToModel <NotScannedModel.DistributorUpdateModel>()).ToList(); model.Pager = boxes.ToMvcPaging(model.DistributorUpdates); // If current page > total pages, redirect to last page if (model.Pager.TotalPages > 0 && model.Pager.PageNumber > model.Pager.TotalPages) { return(Redirect(Url.Paging(model.Pager.TotalPages, model.Pager.PageSize).ToString())); } } return(View(model)); }
/// <summary> /// Creates a new instance of CustomPagination /// </summary> /// <param name="dataSource">A pre-paged slice of data</param> /// <param name="pageNumber">The current page number</param> /// <param name="pageSize">The number of items per page</param> /// <param name="totalItems">The total number of items in the overall datasource</param> public CustomPagination(IEnumerable <T> dataSource, int pageNumber, int pageSize, int totalItems, GridSortOptions sortOptions, IDictionary <string, decimal> dicSum) { _dataSource = dataSource.ToList(); PageNumber = pageNumber; PageSize = pageSize; TotalItems = totalItems; SortOptions = sortOptions; DicSum = dicSum; }
/// <summary> /// This method takes in a filter list, paging/sort options and applies /// them to an IQueryable of type ProductViewModel /// </summary> /// <returns> /// The return object is a container that holds the sorted/paged list, /// state for the fiters and state about the current sorted column /// </returns> public ActionResult Index( string productName, int?supplierID, int?categoryID, GridSortOptions gridSortOptions, int?page) { var productList = productRepository.GetProductsProjected(); // Set default sort column if (string.IsNullOrWhiteSpace(gridSortOptions.Column)) { gridSortOptions.Column = "ProductID"; } // Filter on SupplierID if (supplierID.HasValue) { productList = productList.Where(a => a.SupplierID == supplierID); } // Filter on CategoryID if (categoryID.HasValue) { productList = productList.Where(a => a.CategoryID == categoryID); } // Filter on ProductName if (!string.IsNullOrWhiteSpace(productName)) { productList = productList.Where(a => a.ProductName.Contains(productName)); } // Create all filter data and set current values if any // These values will be used to set the state of the select list and textbox // by sending it back to the view. var productFilterViewModel = new ProductFilterViewModel(); productFilterViewModel.SelectedCategoryID = categoryID ?? -1; productFilterViewModel.SelectedSupplierID = supplierID ?? -1; productFilterViewModel.Fill(); // Order and page the product list var productPagedList = productList .OrderBy(gridSortOptions.Column, gridSortOptions.Direction) .AsPagination(page ?? 1, 10); var productListContainer = new ProductListContainerViewModel { ProductPagedList = productPagedList, ProductFilterViewModel = productFilterViewModel, GridSortOptions = gridSortOptions }; return(View(productListContainer)); }
// // GET: /File/ public ActionResult Index(bool?group, bool?owner, int?id_file_detail, int?page, int?size, GridSortOptions sort, string searcher, int?id_user) { IEnumerable <file> files = db.files.ToList(); if (owner.HasValue && owner.Value) { files = files.Where(p => p.user.email == User.Identity.Name); ViewBag.owner = true; } if (id_file_detail.HasValue) { files = files.Where(a => a.id_file_detail == id_file_detail.Value); ViewBag.id_file_detail = id_file_detail.Value; } if (searcher != null) { files = files.Where(a => a.name.ToLower().Contains(searcher.ToLower()) || searcher.Equals(a.file_detail.md5) || searcher.Equals(a.file_detail.sha1) || searcher.Equals(a.file_detail.sha256) || searcher.Equals(a.file_detail.sha512) || searcher.Equals(a.file_detail.ssdeep) || searcher.Equals(a.file_detail.crc32)); } if (id_user.HasValue) { files = files.Where(p => p.user.id == id_user); ViewBag.id_user = id_user; } ViewData["sort"] = sort; ViewData["owner"] = owner; if (group.HasValue && group.Value) { sort.Column = String.IsNullOrEmpty(sort.Column) ? "md5" : sort.Column; ViewData["sort"] = sort; IEnumerable <file_detail> fd = files.Select(p => p.file_detail); fd = fd.Distinct().OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, size ?? 10); ViewBag.data = fd; if (Request.IsAjaxRequest()) { return(PartialView("_GridFileDet")); } return(View()); } else { sort.Column = String.IsNullOrEmpty(sort.Column) ? "name" : sort.Column; ViewData["sort"] = sort; files = files.OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, size ?? 10); ViewBag.data = files; if (Request.IsAjaxRequest()) { return(PartialView("_GridFile")); } return(View()); } }
private IEnumerable <Employee> SortEmployeesForGrid(GridSortOptions sort) { IEnumerable <Employee> employees = dataManager.Employees.GetEmployees().Where(x => x.Login != null).Select(x => x); if (sort.Column != null) { employees = employees.OrderBy(sort.Column, sort.Direction); ViewBag.Sort = sort; } return(employees); }
public ActionResult Sorting(GridSortOptions sort) { ViewData["sort"] = sort; var people = _peopleFactory.CreatePeople(); if (!string.IsNullOrEmpty(sort.Column)) { people = people.OrderBy(sort.Column, sort.Direction); } return(View(people)); }
public ActionResult Index(string MaChucVu, string TenChucVu, int?Page, GridSortOptions Sort) { ViewBag.hdMaChucVu = MaChucVu; ViewBag.hdTenChucVu = TenChucVu; ViewBag.hdPage = Page ?? 1; if (Sort.Column == null) { Sort.Column = "MaChucVu"; Sort.Direction = MvcContrib.Sorting.SortDirection.Ascending; } ViewBag.Sort = Sort; return(View()); }
public ActionResult TechnicalRegulations(GridSortOptions sort) { var model = new TechnicalRegulationsViewModel { TechnicalRegulations = dataManager.TechnicalRegulations.GetTechnicalRegulations() }; model.TechnicalRegulations = model.TechnicalRegulations.OrderBy(sort.Column, sort.Direction); ViewBag.Sort = sort; return(View(model)); }
public ActionResult Index(GageViewModel model, GridSortOptions sort, int?page) { if (ModelState.IsValid) { dataManager.Gages.CreateGage(model.Name, model.SerialNumber, "не поверен"); return(RedirectToAction("Index", "Metrology")); } ViewBag.GagesGrid = PreparationGageGrid(sort, page); ViewBag.ExpirationOfVerification = ExpirationOfVerification(); return(View(model)); }
public ActionResult SortingAndPaging(int?page, GridSortOptions sort) { ViewData["sort"] = sort; var people = _peopleFactory.CreatePeople(); if (!string.IsNullOrEmpty(sort.Column)) { people = people.OrderBy(sort.Column, sort.Direction); } people = people.AsPagination(page ?? 1, 10); return(View(people)); }
/// <summary> /// Creates a new instance of the <see cref="LazyPagination{T}"/> class. /// </summary> /// <param name="query">The query to page.</param> /// <param name="pageNumber">The current page number.</param> /// <param name="pageSize">Number of items per page.</param> public LazyPagination(IQueryable <T> query, int pageNumber, int pageSize, GridSortOptions sortOptions, IDictionary <string, decimal> dicSum) { PageNumber = pageNumber; PageSize = pageSize; Query = query; SortOptions = sortOptions; DicSum = dicSum; //add by zhangh 2013/5/31 页码为-1时,返回最大页码 if (PageNumber == -1) { PageNumber = TotalPages; } }
public ActionResult Index(string name, string city, string street, GridSortOptions gridSortOptions, [DefaultValue(1)] int page) { // Pobranie listy użtkowników var providersList = _providerRepo.GetAllServiceProviders(); // Ograniczenie listy użtkowników do potwierdzonych dla użytkowników zalogowanych innych niż administrator if (!Roles.GetRolesForUser(WebSecurity.CurrentUserName).Contains("Administrator")) { providersList = providersList.Where(a => a.IsConfirmed); } // Ustawienie domyślnej kolumny sortowania if (string.IsNullOrWhiteSpace(gridSortOptions.Column)) { gridSortOptions.Column = "Id"; } // Filtrowanie po nazwie if (!string.IsNullOrWhiteSpace(name)) { providersList = providersList.Where(a => a.Name.Contains(name)); } // Filtrowanie po mieście if (!string.IsNullOrWhiteSpace(city)) { providersList = providersList.Where(a => a.City.Contains(city)); } // Filtrowanie po ulicy if (!string.IsNullOrWhiteSpace(street)) { providersList = providersList.Where(a => a.Street.Contains(street)); } var providerFilterViewModel = new ServiceProviderFilterViewModel(); // Sortowanie listy użtkowników oraz stronicowanie var providerPagedList = providersList.OrderBy(gridSortOptions.Column, gridSortOptions.Direction) .AsPagination(page, 5); var providerListContainer = new ServiceProviderListContainerViewModel { ServiceProviderPagedList = providerPagedList, ServiceProviderFilterViewModel = providerFilterViewModel, GridSortOptions = gridSortOptions }; return(View(providerListContainer)); }
public IActionResult Users() { ViewData.Model = new UserListVM() { RoleList = TypeOfUserRole.Administrator.ToSimpleDtoList() .InsertItemAtFrontOfList(new SimpleDto() { Id = AppConstants.PLACEHOLDER_ROW_ID, Name = "[Any Role]" }), UserList = new CustomPagination <UserDto>(new List <UserDto>(), 1, AppConstants.UNPAGED_PAGE_SIZE_IN_ROWS, 0) }; ViewData["sort"] = new GridSortOptions(); return(View()); }
public ViewResult Index(int?index, GridSortOptions sort) { ViewData["isApproved"] = true; ViewData["isLockedOut"] = false; int membershipAppId = int.Parse(ConfigurationManager.AppSettings["membershipAppId"]); string connString = ConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString; return(View(new IndexViewModel { //Changed to FindAllSorted. Originally it calls to standard method FindAll Users = _userService.FindAllSorted(index ?? 0, PageSize, membershipAppId, connString), Roles = _rolesService.FindAll() })); }
public ActionResult Employees(RegistrationViewModel model, GridSortOptions sort) { ViewBag.Employees = SortEmployeesForGrid(sort); if (ModelState.IsValid) { if (dataManager.Employees.GetEmployeeByLogin(model.Login) == null) { dataManager.Employees.CreateEmployee(model.FirstName, model.LastName, model.MiddleName, model.Post, model.Department, model.Login, model.Password); return(RedirectToAction("Employees")); } ModelState.AddModelError("", "Пользователь с таким логином уже существует."); } return(View(model)); }
public ActionResult Index(int page = 1, int pageSize = 10, GridSortOptions sort = null) { var model = new DataPurgeIndexModel(); if (model.RegisteredModel.PurgeDate == DateTime.MinValue) { model.RegisteredModel.PurgeDate = DateTime.Today; } if (model.RegisteredModel.StartDate == DateTime.MinValue) { model.RegisteredModel.StartDate = DateTime.Today; } if (model.RegisteredModel.EndDate == DateTime.MinValue) { model.RegisteredModel.EndDate = DateTime.Today; } // Set profile box data if (sort == null || string.IsNullOrEmpty(sort.Column)) { sort = new GridSortOptions() { Column = "PurgeDate", Direction = SortDirection.Ascending } } ; ViewBag.Sort = sort; var boxes = _dataPurgeService.SearchDataPurges( page, pageSize, sort.Column, WebUtility.GetSortDir(sort)); model.Purges = boxes.Select(x => x.ToModel <DataPurgeModel>()).ToList(); model.Pager = boxes.ToMvcPaging(model.Purges); // If current page > total pages, redirect to last page if (model.Pager.TotalPages > 0 && model.Pager.PageNumber > model.Pager.TotalPages) { return(Redirect(Url.Paging(model.Pager.TotalPages, model.Pager.PageSize).ToString())); } return(View(model)); }
// // GET: /ProfileScan/ public ActionResult Index(ProfileScanSearchModel search, int page = 1, int pageSize = 10, GridSortOptions sort = null) { var model = new ProfileScanIndexModel(); if (search.StartDate == DateTime.MinValue) { search.StartDate = DateTime.Now.AddDays(-7); } if (search.EndDate == DateTime.MinValue) { search.EndDate = DateTime.Now; } // Set profile box data if (sort == null || string.IsNullOrEmpty(sort.Column)) { sort = new GridSortOptions() { Column = "ScannedDate", Direction = SortDirection.Descending } } ; ViewBag.Sort = sort; var boxes = _profileService.SearchProfileScans( search.ToCriteria <ProfileScanSearchCriteria>(), page, pageSize, sort.Column, WebUtility.GetSortDir(sort)); model.Scans = boxes.Select(x => x.ToModel <ProfileScanModel>()).ToList(); model.Pager = boxes.ToMvcPaging(model.Scans); model.Search = search; model.AvailableWarehouses = GetAllWarehouses(); model.AvailableResults = GetAllProfileScanResults(); // If current page > total pages, redirect to last page if (model.Pager.TotalPages > 0 && model.Pager.PageNumber > model.Pager.TotalPages) { return(Redirect(Url.Paging(model.Pager.TotalPages, model.Pager.PageSize).ToString())); } return(View(model)); } }
// // GET: /User/ public ActionResult Index(int?page, int?size, GridSortOptions sort, string searcher) { sort.Column = String.IsNullOrEmpty(sort.Column) ? "name" : sort.Column; IEnumerable <user> users = db.users.ToList(); if (searcher != null) { users = users.Where(a => a.name.ToLower().Contains(searcher.ToLower()) || a.email.ToLower().Contains(searcher.ToLower())); } users = users.OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, size ?? 10); ViewData["sort"] = sort; if (Request.IsAjaxRequest()) { return(PartialView("_Grid", users)); } return(View(users)); }
public ActionResult Index(string Name, string City, string Street, GridSortOptions sort, [DefaultValue(1)] int page) { IQueryable <ServiceProviderViewModel> providers = _serviceProviderRepo.GetAllServiceProvider(); if (!User.IsInRole("administrator")) { providers.Where(s => s.IsConfirmed == true); } if (string.IsNullOrWhiteSpace(sort.Column)) { sort.Column = "ServiceProviderId"; } if (!string.IsNullOrWhiteSpace(Name)) { providers = providers.Where(c => c.Name.Contains(Name)); } if (!string.IsNullOrWhiteSpace(City)) { providers = providers.Where(c => c.City.Contains(City)); } if (!string.IsNullOrWhiteSpace(Street)) { providers = providers.Where(c => c.Street.Contains(Street)); } //potrzebna przestrzen nazw using MvcContrib.Sorting; using MvcContrib.Pagination; var serviceProviderPagedList = providers.OrderBy(sort.Column, sort.Direction).AsPagination(page, 5); ServiceProviderFilterViewModel serviceProviderFilterViewModel = new ServiceProviderFilterViewModel(); ServiceProviderListContainerViewModel customerListContainerViewModel = new ServiceProviderListContainerViewModel { ServiceProviderPagedList = serviceProviderPagedList, ServiceProviderFilterViewModel = serviceProviderFilterViewModel, GridSortOptions = sort }; return(View(customerListContainerViewModel)); }
private void DataGrid_Sorting(object sender, DataGridColumnEventArgs e) { var grid = (DataGrid)sender; e.Column.SortDirection = GetSortDirection(grid, e.Column); // Remove sorting indicators from other columns foreach (var dgColumn in grid.Columns) { if (dgColumn != e.Column) { dgColumn.SortDirection = null; } } GridSortOptions sortOptions = new GridSortOptions(e.Column.Tag, e.Column.SortDirection); ViewModel.SortCommand.Execute(sortOptions); }
/// <summary> /// Renders the header text. /// </summary> /// <param name="column">The column.</param> protected override void RenderHeaderText(GridColumn <T> column) { if (IsSortingEnabled && column.Sortable) { bool isSortedByThisColumn = GridModel.SortOptions.Column == GenerateSortColumnName(column); string sortClass; if (isSortedByThisColumn) { sortClass = GridModel.SortOptions.Direction == SortDirection.Ascending ? "bcms-sort-arrow-top" : "bcms-sort-arrow-bottom"; } else { sortClass = null; } var displayName = column.DisplayName; string sortColumnName = GenerateSortColumnName(column); var sortOptions = new GridSortOptions { Column = sortColumnName }; sortOptions.Direction = (GridModel.SortOptions.Direction == SortDirection.Ascending && isSortedByThisColumn) ? SortDirection.Descending : SortDirection.Ascending; var link = string.Format("<a class=\"{0} bcms-sort-arrow\" data-column=\"{1}\" data-direction=\"{2}\">{3}</a>", sortClass, sortOptions.Column, sortOptions.Direction, displayName); RenderText(link); } else { RenderText(column.DisplayName); } }