Exemplo n.º 1
0
        public static GridModel ApplyJqGridFilters <T>(IQueryable <T> model, GridSettings grid, dynamic userdata = null) where T : class
        {
            if (grid == null)
            {
                grid = new GridSettings();
            }

            //filtering
            if (grid.IsSearch)
            {
                model = model.Where <T>(grid.Where);
            }

            //sorting
            if (string.IsNullOrEmpty(grid.SortColumn))
            {
                grid.SortColumn = "id";
            }

            model = model.OrderBy <T>(grid.SortColumn, grid.SortOrder);

            //paging
            if (grid.PageIndex == 0)
            {
                grid.PageIndex = 1;
            }

            T[] data = null;
            if (grid.PageSize == 0)
            {
                data = model.ToArray();
            }
            else
            {
                data = model.Skip((grid.PageIndex - 1) * grid.PageSize).Take(grid.PageSize).ToArray();
            }

            //count
            var totalcount = model.Count();

            //converting in grid format
            var gridmodel = new GridModel()
            {
                total    = (int)Math.Ceiling((double)totalcount / grid.PageSize),
                page     = grid.PageIndex,
                records  = totalcount,
                rows     = data,
                userdata = userdata
            };

            return(gridmodel);
        }
Exemplo n.º 2
0
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            if (ResponseIsValid(actionExecutedContext.Response))
            {
                GridSettings grid;
                var          qscoll = actionExecutedContext.Request.RequestUri.ParseQueryString();
                try
                {
                    string filters = qscoll["filters"];
                    if (string.IsNullOrEmpty(filters))
                    {
                        filters = string.Format("{{\"groupOp\":\"AND\",\"rules\":[{{\"field\":\"{0}\",\"op\":\"{1}\",\"data\":\"{2}\"}}]}}", qscoll["searchField"], qscoll["searchOper"], qscoll["searchString"]);
                    }

                    grid = new GridSettings()
                    {
                        IsSearch   = bool.Parse(qscoll["_search"] ?? "false"),
                        PageIndex  = int.Parse(qscoll["page"] ?? "1"),
                        PageSize   = int.Parse(qscoll["rows"] ?? "25"),
                        SortColumn = qscoll["sidx"] ?? "",
                        SortOrder  = qscoll["sord"] ?? "asc",
                        Where      = Filter.Create(filters),
                    };
                }
                catch (Exception ex)
                {
                    throw new HttpResponseException(actionExecutedContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
                }

                object responseObject;
                actionExecutedContext.Response.TryGetContentValue(out responseObject);
                if (responseObject is IQueryable)
                {
                    var robj = jqGridHelper.ApplyJqGridFilters(responseObject as IQueryable <object>, grid);
                    actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(HttpStatusCode.OK, robj);
                }
            }
        }