public ActionResult GetContentDetails(string org, string pathPart, [ModelBinder(typeof(JqueryDataTableModelBinder))] JqueryDataTableRequest dtRequest) { IEnumerable <WebDavResource> folderItems; if (string.IsNullOrEmpty(dtRequest.Search.Value) == false) { folderItems = _webdavManager.SearchFiles(WspContext.User.ItemId, pathPart, dtRequest.Search.Value, WspContext.User.Login, true).Cast <WebDavResource>(); } else { folderItems = _webdavManager.OpenFolder(pathPart).Cast <WebDavResource>(); } var tableItems = Mapper.Map <IEnumerable <WebDavResource>, IEnumerable <ResourceTableItemModel> >(folderItems).ToList(); FillContentModel(tableItems, org); var orders = dtRequest.Orders.ToList(); orders.Insert(0, new JqueryDataTableOrder { Column = 3, Ascending = false }); dtRequest.Orders = orders; var dataTableResponse = DataTableHelper.ProcessRequest(tableItems, dtRequest); return(Json(dataTableResponse, JsonRequestBehavior.AllowGet)); }
public static JqueryDataTablesResponse ProcessRequest <TEntity>(IEnumerable <TEntity> entities, JqueryDataTableRequest request) where TEntity : JqueryDataTableBaseEntity { IOrderedEnumerable <TEntity> orderedEntities = null; foreach (var order in request.Orders) { var closure = order; if (orderedEntities == null) { orderedEntities = order.Ascending ? entities.OrderBy(x => x[closure.Column]) : entities.OrderByDescending(x => x[closure.Column]); } else { orderedEntities = order.Ascending ? orderedEntities.ThenBy(x => x[closure.Column]) : orderedEntities.ThenByDescending(x => x[closure.Column]); } } if (orderedEntities == null) { orderedEntities = entities.OrderBy(x => x[0]); } var itemsPaged = orderedEntities.Skip(request.Start).Take(request.Count).ToList(); var totalCount = orderedEntities.Count(); return(new JqueryDataTablesResponse( request.Draw, itemsPaged, totalCount, totalCount)); }