public static string GetFiltering <T>(this KendoGridRequest request) { var finalExpression = ""; foreach (var filterObject in request.FilterObjectWrapper.FilterObjects) { if (finalExpression.Length > 0) { finalExpression += " " + request.FilterObjectWrapper.LogicToken + " "; } if (filterObject.IsConjugate) { var expression1 = GetExpression <T>(filterObject.Field1, filterObject.Operator1, filterObject.Value1); var expression2 = GetExpression <T>(filterObject.Field2, filterObject.Operator2, filterObject.Value2); var combined = string.Format("({0} {1} {2})", expression1, request.FilterObjectWrapper.LogicToken, expression2); finalExpression += combined; } else { var expression = GetExpression <T>(filterObject.Field1, filterObject.Operator1, filterObject.Value1); finalExpression += expression; } } if (finalExpression.Length == 0) { return("true"); } return(finalExpression); }
/// <summary> /// KendoGrid constructor - IEnumerable set, will evaluate set AsQueryable() /// </summary> /// <param name="request">KendoGridRequest object</param> /// <param name="list">IEnumerable set representing a page of data</param> public KendoGrid(KendoGridRequest request, IEnumerable <T> list) { var filtering = request.GetFiltering <T>(); var sorting = request.GetSorting(); Data = list.AsQueryable() .Where(filtering) .OrderBy(sorting).ToList(); Total = Data.Count(); Data = Data .Skip(request.Skip) .Take(request.Take); }
/// <summary> /// KendoGrid constructor - IQueryable set /// </summary> /// <param name="request">KendoGridRequest object</param> /// <param name="query">IQueryable object representing unrealized set of data</param> public KendoGrid(KendoGridRequest request, IQueryable <T> query) { // call another method here to get filtering and sorting. var filtering = request.GetFiltering <T>(); var sorting = request.GetSorting(); var tempQuery = query .Where(filtering) .OrderBy(sorting); Total = tempQuery .Count(); Data = tempQuery .Skip(request.Skip) .Take(request.Take); }
public static string GetSorting(this KendoGridRequest request) { var expression = ""; foreach (var sortObject in request.SortObjects) { expression += sortObject.Field + " " + sortObject.Direction + ", "; } if (expression.Length < 2) { return("true"); } expression = expression.Substring(0, expression.Length - 2); return(expression); }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { if (bindingContext == null) { throw new ArgumentNullException("bindingContext"); } _request = controllerContext.HttpContext.Request; var take = Convert.ToInt32(GetQueryStringValue("take")); var page = Convert.ToInt32(GetQueryStringValue("page")); var skip = Convert.ToInt32(GetQueryStringValue("skip")); var pageSize = Convert.ToInt32(GetQueryStringValue("pageSize")); var filterLogic = GetQueryStringValue("filter[logic]"); var sortKeys = (from x in GetRequestKeys() where x.StartsWith("sort") select x).ToList(); var filterKeys = (from x in GetRequestKeys() where x.StartsWith("filter") && x != "filter[logic]" select x).ToList(); var filtering = GetFilterObjects(filterKeys, filterLogic); var sorting = GetSortObjects(sortKeys); var gridObject = new KendoGridRequest { Take = take, Skip = skip, Page = page, PageSize = pageSize, FilterObjectWrapper = filtering, SortObjects = sorting }; return(gridObject); }