示例#1
0
        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));
        }
示例#2
0
        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));
        }