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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }