Пример #1
0
        public static object GetGridData(JqGridRequest jqGridRequest)
        {
            var repo = new CustomerRepository();
            IEnumerable<Customer> customers;
            var criteria = new List<Func<Customer, bool>>();

            if (jqGridRequest.IsSearch)
            {
                foreach (var rule in jqGridRequest.Where.rules)
                {
                    var userData = rule.data.ToLower();

                    if (rule.field == "Id")
                    {
                        criteria.Add(x => x.Id.ToString() == userData);
                    }
                    if (rule.field == "Firstname")
                    {
                        criteria.Add(x => x.Firstname.ToLower().Contains(userData));
                    }
                    if (rule.field == "Lastname")
                    {
                        criteria.Add(x => x.Lastname.ToLower().Contains(userData));
                    }
                    if (rule.field == "Email")
                    {
                        criteria.Add(x => x.Email.ToLower().Contains(userData));
                    }
                    if (rule.field == "DateOfBirth")
                    {
                        criteria.Add(x => x.DateOfBirth.ToString().ToLower().Contains(userData));
                    }
                    if (rule.field == "City")
                    {
                        criteria.Add(x => x.City.ToLower().Contains(userData));
                    }
                }
            }

            switch (jqGridRequest.SortIndex)
            {
                case "Id":
                    customers = repo.GetAll(criteria, jqGridRequest.PageIndex - 1, jqGridRequest.PageSize, x => x.Id, jqGridRequest.SortOrder);
                    break;
                case "Firstname":
                    customers = repo.GetAll(criteria, jqGridRequest.PageIndex - 1, jqGridRequest.PageSize, x => x.Firstname, jqGridRequest.SortOrder);
                    break;
                case "Lastname":
                    customers = repo.GetAll(criteria, jqGridRequest.PageIndex - 1, jqGridRequest.PageSize, x => x.Lastname, jqGridRequest.SortOrder);
                    break;
                case "Email":
                    customers = repo.GetAll(criteria, jqGridRequest.PageIndex - 1, jqGridRequest.PageSize, x => x.Email, jqGridRequest.SortOrder);
                    break;
                case "DateOfBirth":
                    customers = repo.GetAll(criteria, jqGridRequest.PageIndex - 1, jqGridRequest.PageSize, x => x.DateOfBirth, jqGridRequest.SortOrder);
                    break;
                case "City":
                    customers = repo.GetAll(criteria, jqGridRequest.PageIndex - 1, jqGridRequest.PageSize, x => x.City, jqGridRequest.SortOrder);
                    break;
                default:
                    customers = repo.GetAll(criteria, jqGridRequest.PageIndex - 1, jqGridRequest.PageSize, x => x.Id, jqGridRequest.SortOrder);
                    break;
            }

            var totalCustomers = repo.GetAll(criteria).Count();

            return new
            {
                total = (totalCustomers / jqGridRequest.PageSize) + ((totalCustomers % jqGridRequest.PageSize > 0) ? 1 : 0),
                page = jqGridRequest.PageIndex,
                records = totalCustomers,
                rows = (
                    from c in customers
                    select new Dictionary<string, string>
                    {
                        {"Id", c.Id.ToString() }, // Id must always be specified!!
                        {"Firstname", c.Firstname},
                        {"Lastname", c.Lastname},
                        {"Email", c.Email},
                        {"DateOfBirth", c.DateOfBirth.ToShortDateString()},
                        {"City", c.City}

                    }).ToArray()
            };
        }
        public ActionResult GetGrid(JqGridRequest request, string key, string value, string viewModel, string field, long?id_master)
        {
            string fieldMain = String.Empty;
            long   ID_master;
            bool   result = Int64.TryParse(id_master.ToString(), out ID_master);


            if (String.IsNullOrEmpty(field))
            {
                fieldMain = "IDDokumentGr";
            }

            else
            {
                fieldMain = field;
            }

            viewModel = gridModelNamespace + viewModel;

            string filterExpression = String.Empty;

            if (request.Searching)
            {
                if (request.SearchingFilter != null)
                {
                    filterExpression = GetFilter(request.SearchingFilter.SearchingName, request.SearchingFilter.SearchingOperator, request.SearchingFilter.SearchingValue);
                }
                else if (request.SearchingFilters != null)
                {
                    StringBuilder filterExpressionBuilder  = new StringBuilder();
                    string        groupingOperatorToString = request.SearchingFilters.GroupingOperator.ToString();
                    foreach (JqGridRequestSearchingFilter searchingFilter in request.SearchingFilters.Filters)
                    {
                        filterExpressionBuilder.Append(GetFilter(searchingFilter.SearchingName, searchingFilter.SearchingOperator, searchingFilter.SearchingValue));
                        filterExpressionBuilder.Append(String.Format(KeyWord.FormaterRazno.StringFormat.Prvi, groupingOperatorToString));
                    }
                    if (filterExpressionBuilder.Length > 0)
                    {
                        filterExpressionBuilder.Remove(filterExpressionBuilder.Length - groupingOperatorToString.Length - 2, groupingOperatorToString.Length + 2);
                    }
                    filterExpression = filterExpressionBuilder.ToString();
                }
            }
            string sortingName       = request.SortingName;
            long   totalRecordsCount = GetCount(filterExpression, key, value);


            JqGridResponse response = new JqGridResponse()
            {
                TotalPagesCount   = (int)Math.Ceiling((float)totalRecordsCount / (float)request.RecordsCount),
                PageIndex         = request.PageIndex,
                TotalRecordsCount = totalRecordsCount,
            };


            response.Records.AddRange
            (
                from item in GetGridData(filterExpression, key, value, String.Format(KeyWord.FormaterRazno.StringFormat.PrviDrugi, sortingName, request.SortingOrder), request.PageIndex * request.RecordsCount, (request.PagesCount.HasValue ? request.PagesCount.Value : 1) * request.RecordsCount)
                select new JqGridRecord(Convert.ToString(item.GetType().GetProperty(fieldMain).GetValue(item, null)), Activator.CreateInstance(Type.GetType(viewModel), new[] { item }))
            );


            return(new JqGridJsonResult()
            {
                Data = response
            });
        }
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            if (controllerContext == null)
                throw new ArgumentNullException("controllerContext");
            if (bindingContext == null)
                throw new ArgumentNullException("bindingContext");

            JqGridRequest model = new JqGridRequest();

            model.Searching = false;
            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.Searching))
            {
                ValueProviderResult searchingResult = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.Searching);
                if (searchingResult != null)
                    model.Searching = (bool)searchingResult.ConvertTo(typeof(Boolean));
            }

            model.SearchingFilter = null;
            model.SearchingFilters = null;
            if (model.Searching)
            {
                ValueProviderResult searchingFiltersResult = bindingContext.ValueProvider.GetValue("filters");
                if (searchingFiltersResult != null && !String.IsNullOrWhiteSpace(searchingFiltersResult.AttemptedValue))
                {
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    serializer.RegisterConverters(new JavaScriptConverter[] { new Lib.Web.Mvc.JQuery.JqGrid.Serialization.JqGridScriptConverter() });
                    model.SearchingFilters = serializer.Deserialize<JqGridRequestSearchingFilters>((string)searchingFiltersResult.ConvertTo(typeof(String)));
                }
                else
                {
                    string searchingName = String.Empty;
                    ValueProviderResult searchingNameResult = bindingContext.ValueProvider.GetValue("searchField");
                    if (searchingNameResult != null)
                        searchingName = (string)searchingNameResult.ConvertTo(typeof(String));

                    string searchingValue = String.Empty;
                    ValueProviderResult searchingValueResult = bindingContext.ValueProvider.GetValue("searchString");
                    if (searchingValueResult != null)
                        searchingValue = (string)searchingValueResult.ConvertTo(typeof(String));

                    JqGridSearchOperators searchingOperator = JqGridSearchOperators.Eq;
                    ValueProviderResult searchingOperatorResult = bindingContext.ValueProvider.GetValue("searchOper");
                    if (searchingOperatorResult != null)
                        Enum.TryParse<JqGridSearchOperators>((string)searchingOperatorResult.ConvertTo(typeof(String)), true, out searchingOperator);

                    if (!String.IsNullOrWhiteSpace(searchingName) && (!String.IsNullOrWhiteSpace(searchingValue) || ((searchingOperator & JqGridSearchOperators.NullOperators) != 0)))
                        model.SearchingFilter = new JqGridRequestSearchingFilter() { SearchingName = searchingName, SearchingOperator = searchingOperator, SearchingValue = searchingValue };
                }
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.SortingName))
            {
                ValueProviderResult sortingName = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.SortingName);
                if (sortingName != null && !String.IsNullOrWhiteSpace(sortingName.AttemptedValue))
                    model.SortingName = (string)sortingName.ConvertTo(typeof(String));
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.SortingOrder))
            {
                ValueProviderResult sortingOrder = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.SortingOrder);
                if (sortingOrder != null && !String.IsNullOrWhiteSpace(sortingOrder.AttemptedValue))
                    model.SortingOrder = (JqGridSortingOrders)sortingOrder.ConvertTo(typeof(JqGridSortingOrders));
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.PageIndex))
                model.PageIndex = (int)bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.PageIndex).ConvertTo(typeof(Int32)) - 1;
            else
                model.PageIndex = 0;

            model.PagesCount = null;
            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.PagesCount))
            {
                ValueProviderResult pagesCountValueResult = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.PagesCount);
                if (pagesCountValueResult != null)
                    model.PagesCount = (int)pagesCountValueResult.ConvertTo(typeof(Int32));
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.RecordsCount))
                model.RecordsCount = (int)bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.RecordsCount).ConvertTo(typeof(Int32));

            return model;
        }
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (ParametersNames == null)
            {
                ParametersNames = JqGridRequest.ParameterNames;
            }

            var oper = context.Controller.ValueProvider.GetValue(ParametersNames.Operator)?.AttemptedValue;

            if (oper == null)
            {
                var requestModel      = new JqGridRequest();
                var requestModelState = Helpers.BindModel(ref requestModel, context);
                if (!requestModelState.IsValid)
                {
                    throw new JqGridModelBindingException("Error binding JqGrid request model", requestModelState);
                }

                var filterExpression = string.Empty;
                if (requestModel.Searching)
                {
                    if (requestModel.SearchingFilter != null)
                    {
                        filterExpression = GetFilter(requestModel.SearchingFilter.SearchingName,
                                                     requestModel.SearchingFilter.SearchingOperator, requestModel.SearchingFilter.SearchingValue);
                    }
                    else if (requestModel.SearchingFilters != null)
                    {
                        var filterExpressionBuilder  = new StringBuilder();
                        var groupingOperatorToString = requestModel.SearchingFilters.GroupingOperator.ToString();
                        foreach (var searchingFilter in requestModel.SearchingFilters.Filters)
                        {
                            filterExpressionBuilder.Append(GetFilter(searchingFilter.SearchingName, searchingFilter.SearchingOperator,
                                                                     searchingFilter.SearchingValue));
                            filterExpressionBuilder.Append($" {groupingOperatorToString} ");
                        }

                        if (filterExpressionBuilder.Length > 0)
                        {
                            filterExpressionBuilder.Remove(filterExpressionBuilder.Length - groupingOperatorToString.Length - 2,
                                                           groupingOperatorToString.Length + 2);
                        }
                        filterExpression = filterExpressionBuilder.ToString();
                    }
                    else
                    {
                        var filterExpressionBuilder = new StringBuilder();
                        foreach (var property in typeof(T).GetProperties().Where(p =>
                        {
                            var attrs = p.GetCustomAttributes <JqGridColumnSearchableAttribute>(false);
                            return(!attrs.Any() || attrs.Any(a => a.Searchable));
                        }))
                        {
                            var value = context.Controller.ValueProvider.GetValue(property.Name)?.AttemptedValue;
                            if (value == null)
                            {
                                continue;
                            }
                            filterExpressionBuilder.Append(property.PropertyType == typeof(string)
                                ? $"{property.Name} = \"{value}\" AND "
                                : $"{property.Name} = {value} AND ");
                            if (filterExpressionBuilder.Length > 0)
                            {
                                filterExpressionBuilder.Remove(filterExpressionBuilder.Length - 5, 5);
                            }
                            filterExpression = filterExpressionBuilder.ToString();
                        }
                    }
                }


                var totalRecords = _rows.Count();
                if (_additionalSelector != null)
                {
                    _rows = _rows.Where(_additionalSelector);
                }

                if (!string.IsNullOrEmpty(filterExpression))
                {
                    _rows = _rows.Where(filterExpression);
                }

                if (IsSortingEnabled)
                {
                    if (!string.IsNullOrWhiteSpace(requestModel.SortingName))
                    {
                        _rows = _rows.OrderBy($"{requestModel.SortingName} {requestModel.SortingOrder}");
                    }
                    else
                    {
                        var props = typeof(T).GetProperties();
                        if (props.Length == 0)
                        {
                            throw new NoGetPropertiesException();
                        }

                        _rows = _rows.OrderBy($"{props[0].Name} {requestModel.SortingOrder}");
                    }
                }

                if (IsPagingEnabled)
                {
                    _rows = _rows
                            .Skip(requestModel.PageIndex * requestModel.RecordsCount)
                            .Take(requestModel.PagesCount ?? 1 * requestModel.RecordsCount);
                }

                var response = new JqGridResponse
                {
                    TotalPagesCount   = (int)Math.Ceiling((float)totalRecords / requestModel.RecordsCount),
                    PageIndex         = requestModel.PageIndex,
                    TotalRecordsCount = totalRecords,
                    Reader            = JsonReader ?? JqGridResponse.JsonReader
                };
                response.Records.AddRange(_rows.ToList().Select(r => new JqGridRecord(r.Id.ToString(), r)));
                new JqGridJsonResult {
                    Data = response, JsonRequestBehavior = JsonRequestBehavior
                }.ExecuteResult(context);
            }
            else if (oper == ParametersNames.AddOperator)
            {
                if (_addFunc == null)
                {
                    throw new FunctionMissedException("No add function");
                }
                var rowModel      = new T();
                var rowModelState = Helpers.BindModel(ref rowModel, context);
                if (!rowModelState.IsValid)
                {
                    throw new JqGridModelBindingException("Error binding row model", rowModelState);
                }

                var result = _addFunc(rowModel);
                if (result?.Success ?? true)
                {
                    new JqGridFormOperationResult(rowModel.Id)
                    {
                        JsonRequestBehavior = JsonRequestBehavior
                    }.ExecuteResult(context);
                }
                else
                {
                    if (EnableAddJsonResponse)
                    {
                        InitFormOptions();
                        new JqGridFormOperationResult(result.Message ?? AddErrorMessage ?? EditErrorMessage)
                        {
                            JsonRequestBehavior = JsonRequestBehavior
                        }.ExecuteResult(context);
                    }
                    else
                    {
                        new HttpStatusCodeResult(HttpStatusCode.BadRequest,
                                                 (result.Message ?? AddErrorMessage ??
                                                  EditErrorMessage).Replace("\n", ""))
                        .ExecuteResult(context);
                    }
                }
            }
            else if (oper == ParametersNames.EditOperator)
            {
                if (_editFunc == null)
                {
                    throw new FunctionMissedException("No edit function");
                }
                var editRowModel      = new T();
                var editRowModelState = Helpers.BindModel(ref editRowModel, context);
                if (!editRowModelState.IsValid)
                {
                    throw new JqGridModelBindingException("Error binding row model", editRowModelState);
                }

                var result = _editFunc(editRowModel);
                if (result?.Success ?? true)
                {
                    if (EnableEditJsonResponse)
                    {
                        new JqGridFormOperationResult
                        {
                            JsonRequestBehavior = JsonRequestBehavior
                        }.ExecuteResult(context);
                    }
                    else
                    {
                        new HttpStatusCodeResult(HttpStatusCode.OK).ExecuteResult(context);
                    }
                }
                else
                {
                    if (EnableEditJsonResponse)
                    {
                        InitFormOptions();
                        new JqGridFormOperationResult(result.Message ?? EditErrorMessage)
                        {
                            JsonRequestBehavior = JsonRequestBehavior
                        }.ExecuteResult(context);
                    }
                    else
                    {
                        new HttpStatusCodeResult(HttpStatusCode.BadRequest, (result.Message ?? EditErrorMessage).Replace("\n", ""))
                        .ExecuteResult(context);
                    }
                }
            }
            else if (oper == ParametersNames.DeleteOperator)
            {
                if (_delFunc == null)
                {
                    throw new FunctionMissedException("No delete function");
                }
                var delRowModel      = new T();
                var delRowModelState = Helpers.BindModel(ref delRowModel, context);
                if (!delRowModelState.IsValid)
                {
                    throw new JqGridModelBindingException("Error binding row model", delRowModelState);
                }

                var result = _delFunc(delRowModel.Id);
                if (result?.Success ?? true)
                {
                    if (EnableDeleteJsonResponse)
                    {
                        new JqGridFormOperationResult
                        {
                            JsonRequestBehavior = JsonRequestBehavior
                        }.ExecuteResult(context);
                    }
                    else
                    {
                        new HttpStatusCodeResult(HttpStatusCode.OK).ExecuteResult(context);
                    }
                }
                else
                {
                    if (EnableDeleteJsonResponse)
                    {
                        InitFormOptions();
                        new JqGridFormOperationResult(result.Message ?? DeleteErrorMessage ?? EditErrorMessage)
                        {
                            JsonRequestBehavior = JsonRequestBehavior
                        }.ExecuteResult(context);
                    }
                    else
                    {
                        new HttpStatusCodeResult(HttpStatusCode.BadRequest, (result.Message ?? DeleteErrorMessage ?? EditErrorMessage).Replace("\n", ""))
                        .ExecuteResult(context);
                    }
                }
            }
            else
            {
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
        }
Пример #5
0
        public async Task <DataGridViewModel <ProductDataGridViewModel> > GetDataGridSource(string orderBy, JqGridRequest request, NameValueCollection form, DateTimeType dateTimeType, int page, int pageSize)
        {
            var usersQuery = _products.AsQueryable();

            var query = new JqGridSearch(request, form, dateTimeType).ApplyFilter(usersQuery);

            var dataGridModel = new DataGridViewModel <ProductDataGridViewModel>
            {
                Records = await query.AsQueryable().OrderBy(orderBy)
                          .Skip(page * pageSize)
                          .Take(pageSize).ProjectTo <ProductDataGridViewModel>(null, _mappingEngine).ToListAsync(),

                TotalCount = await query.AsQueryable().OrderBy(orderBy).CountAsync()
            };

            return(dataGridModel);
        }
Пример #6
0
        private IList <ApsClientModel> FilterCharacters(IList <ApsClientModel> queryableList, JqGridRequest request)
        {
            Func <ApsClientModel, bool> filterPredicate = null;

            if (request.Searching)
            {
                if (request.SearchingFilter != null)
                {
                    filterPredicate = GetCharacterSearchingFilterPredicate(request.SearchingFilter);
                }
                else if (request.SearchingFilters != null)
                {
                    filterPredicate = GetCharacterSearchingFiltersPredicate(request.SearchingFilters);
                }
            }

            return((filterPredicate == null) ? queryableList : queryableList.Where(character => filterPredicate(character)).ToList());
        }
        public ActionResult GetPageListJson(long itemId, string condition, string keyword, JqGridRequest request)
        {
            Expression <Func <DataItemDetailEntity, bool> > pk = d => d.ItemId == itemId;

            if (!string.IsNullOrEmpty(keyword))
            {
                Expression <Func <DataItemDetailEntity, bool> > pc = null;
                #region 多条件查询
                switch (condition)
                {
                case "ItemName":            //项目名
                    pc = d => d.ItemName.Contains(keyword);
                    break;

                case "ItemValue":          //项目值
                    pc = d => d.ItemValue.Contains(keyword);
                    break;

                case "SimpleSpelling":     //拼音
                    pc = d => d.SimpleSpelling.Contains(keyword);
                    break;

                default:
                    break;
                }
                #endregion
                pk.And(pc);
            }
            var            query    = _repository.QueryPage(pk, page: request.PageIndex, pageSize: request.RecordsCount);
            var            dtos     = CrudDtoMapper.MapEntityToDtos(query);
            JqGridResponse response = new JqGridResponse()
            {
                TotalPagesCount   = query.TotalPages,
                PageIndex         = request.PageIndex,
                TotalRecordsCount = query.TotalCount,
            };
            foreach (DataItemDetailViewModel userInput in dtos)
            {
                response.Records.Add(new JqGridRecord(Convert.ToString(userInput.Id), userInput));
            }

            response.Reader.RepeatItems = false;
            return(new JqGridJsonResult(response));
        }
        private IQueryable <Character> FilterCharacters(IQueryable <Character> charactersQueryable, JqGridRequest request)
        {
            Func <Character, bool> filterPredicate = null;

            if (request.Searching)
            {
                if (request.SearchingFilter != null)
                {
                    filterPredicate = GetCharacterSearchingFilterPredicate(request.SearchingFilter);
                }
                else if (request.SearchingFilters != null)
                {
                    filterPredicate = GetCharacterSearchingFiltersPredicate(request.SearchingFilters);
                }
            }

            return((filterPredicate == null) ? charactersQueryable : charactersQueryable.Where(character => filterPredicate(character)));
        }
Пример #9
0
        private static StringBuilder GetSearchExpression(JqGridRequest jqGridRequest)
        {
            const string strPredicateFormatBeginsWith               = "{0}.ToString().StartsWith(\"{1}\")";
            const string strPredicateFormatContains                 = "{0} != null && {0}.ToString() != \"\" && {0}.ToString().ToLower().Contains(\"{1}\".ToLowerInvariant())";
            const string strPredicateFormatEqual                    = "{0}.ToString() = \"{1}\"";
            const string strPredicateFormatEqualForChar             = "{0}.ToString() = {1}.ToString()";
            const string strPredicateFormatDateGreaterOrEqual       = "{0} >= DateTime.Parse(\"{1}\")";
            const string strPredicateFormatDateGreaterThan          = "{0} > DateTime.Parse(\"{1}\")";
            const string strPredicateFormatDateLessThan             = "{0} <= DateTime.Parse(\"{1}\")";
            const string strPredicateFormatDateEquals               = "{0}.Date = DateTime.Parse(\"{1}\")";
            const string strPredicateFormatNullIntEquals            = "{0}.HasValue && {0}.Value.ToString() = \"{1}\"";
            const string strPredicateFormatNumberEquals             = "{0} = Decimal.Parse(\"{1}\")";
            const string strPredicateFormatNumberGreaterThan        = "{0} >= Decimal.Parse(\"{1}\")";
            const string strPredicateFormatNumberGreaterOrEqualThan = "{0} >= Decimal.Parse(\"{1}\")";
            const string strPredicateFormatNumberLessThan           = "{0} <= Decimal.Parse(\"{1}\")";

            var    searchExpression = new System.Text.StringBuilder();
            string groupOperation   = String.Empty;

            foreach (JqGridFilterRule item in jqGridRequest.filters.rules)
            {
                if (string.IsNullOrEmpty(item.data) == false)
                {
                    item.data = item.data.Trim();
                }
                if (item.op == "bw")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatBeginsWith, item.field, item.data);
                }
                else if (item.op == "eq")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatEqual, item.field, item.data);
                }
                else if (item.op == "cn")
                {
                    searchExpression.Append(groupOperation);
                    if (item.data.Contains("\""))
                    {
                        searchExpression.AppendFormat(strPredicateFormatContains, item.field, item.data.Replace("\"", "\"\""));
                    }
                    else
                    {
                        searchExpression.AppendFormat(strPredicateFormatContains, item.field, item.data);
                    }
                }
                else if (item.op == "dgt")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatDateGreaterThan, item.field, item.data);
                }
                else if (item.op == "dge")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatDateGreaterOrEqual, item.field, item.data);
                }
                else if (item.op == "dlt")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatDateLessThan, item.field, item.data);
                }
                else if (item.op == "deq")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatDateEquals, item.field, item.data);
                }
                else if (item.op == "gt")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatNumberGreaterThan, item.field, item.data);
                }
                else if (item.op == "ge")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatNumberGreaterOrEqualThan, item.field, item.data);
                }
                else if (item.op == "lt")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatNumberLessThan, item.field, item.data);
                }
                else if (item.op == "chr" && item.data != "-1")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatEqualForChar, item.field, item.data);
                }
                else if (item.op == "neq" && item.data != "-1")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatNullIntEquals, item.field, item.data);
                }
                else if (item.op == "dec" && item.data != "-1")
                {
                    searchExpression.Append(groupOperation);
                    searchExpression.AppendFormat(strPredicateFormatNumberEquals, item.field, item.data);
                }

                groupOperation = String.Format(" {0} ", jqGridRequest.filters.groupOp);
            }
            return(searchExpression);
        }
Пример #10
0
        public ActionResult List(JqGridRequest request)
        {
            var model = this.Manager.GetUsersGridModel(request);

            return(model);
        }
Пример #11
0
 public JqGridSearch(JqGridRequest request, NameValueCollection form, DateTimeType dateTimeType)
 {
     _request      = request;
     _form         = form;
     _dateTimeType = dateTimeType;
 }
Пример #12
0
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            if (controllerContext == null)
            {
                throw new ArgumentNullException("controllerContext");
            }
            if (bindingContext == null)
            {
                throw new ArgumentNullException("bindingContext");
            }

            JqGridRequest model = new JqGridRequest();

            model.Searching = false;
            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.Searching))
            {
                ValueProviderResult searchingResult = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.Searching);
                if (searchingResult != null)
                {
                    model.Searching = (bool)searchingResult.ConvertTo(typeof(Boolean));
                }
            }

            model.SearchingFilter  = null;
            model.SearchingFilters = null;
            if (model.Searching)
            {
                ValueProviderResult searchingFiltersResult = bindingContext.ValueProvider.GetValue("filters");
                if (searchingFiltersResult != null && !String.IsNullOrWhiteSpace(searchingFiltersResult.AttemptedValue))
                {
                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    serializer.RegisterConverters(new JavaScriptConverter[] { new Lib.Web.Mvc.JQuery.JqGrid.Serialization.JqGridScriptConverter() });
                    model.SearchingFilters = serializer.Deserialize <JqGridRequestSearchingFilters>((string)searchingFiltersResult.ConvertTo(typeof(String)));
                }
                else
                {
                    string searchingName = String.Empty;
                    ValueProviderResult searchingNameResult = bindingContext.ValueProvider.GetValue("searchField");
                    if (searchingNameResult != null)
                    {
                        searchingName = (string)searchingNameResult.ConvertTo(typeof(String));
                    }

                    string searchingValue = String.Empty;
                    ValueProviderResult searchingValueResult = bindingContext.ValueProvider.GetValue("searchString");
                    if (searchingValueResult != null)
                    {
                        searchingValue = (string)searchingValueResult.ConvertTo(typeof(String));
                    }

                    JqGridSearchOperators searchingOperator       = JqGridSearchOperators.Eq;
                    ValueProviderResult   searchingOperatorResult = bindingContext.ValueProvider.GetValue("searchOper");
                    if (searchingOperatorResult != null)
                    {
                        Enum.TryParse <JqGridSearchOperators>((string)searchingOperatorResult.ConvertTo(typeof(String)), true, out searchingOperator);
                    }

                    if (!String.IsNullOrWhiteSpace(searchingName) && (!String.IsNullOrWhiteSpace(searchingValue) || ((searchingOperator & JqGridSearchOperators.NullOperators) != 0)))
                    {
                        model.SearchingFilter = new JqGridRequestSearchingFilter()
                        {
                            SearchingName = searchingName, SearchingOperator = searchingOperator, SearchingValue = searchingValue
                        }
                    }
                    ;
                }
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.SortingName))
            {
                ValueProviderResult sortingName = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.SortingName);
                if (sortingName != null && !String.IsNullOrWhiteSpace(sortingName.AttemptedValue))
                {
                    model.SortingName = (string)sortingName.ConvertTo(typeof(String));
                }
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.SortingOrder))
            {
                ValueProviderResult sortingOrder = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.SortingOrder);
                if (sortingOrder != null && !String.IsNullOrWhiteSpace(sortingOrder.AttemptedValue))
                {
                    model.SortingOrder = (JqGridSortingOrders)sortingOrder.ConvertTo(typeof(JqGridSortingOrders));
                }
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.PageIndex))
            {
                model.PageIndex = (int)bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.PageIndex).ConvertTo(typeof(Int32)) - 1;
            }
            else
            {
                model.PageIndex = 0;
            }

            model.PagesCount = null;
            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.PagesCount))
            {
                ValueProviderResult pagesCountValueResult = bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.PagesCount);
                if (pagesCountValueResult != null)
                {
                    model.PagesCount = (int)pagesCountValueResult.ConvertTo(typeof(Int32));
                }
            }

            if (!String.IsNullOrWhiteSpace(JqGridRequest.ParameterNames.RecordsCount))
            {
                model.RecordsCount = (int)bindingContext.ValueProvider.GetValue(JqGridRequest.ParameterNames.RecordsCount).ConvertTo(typeof(Int32));
            }

            return(model);
        }
    }