Пример #1
0
        public JsonResult DataBind(IQueryable <T> dataSource)
        {
            AjaxCallBackMode ajaxCallBackMode = this.AjaxCallBackMode;

            if (ajaxCallBackMode != AjaxCallBackMode.RequestData)
            {
                return(null);
            }

            HttpRequest request = HttpContext.Current.Request;

            if (request == null)
            {
                throw new Exception("Cannot Get Request Variable");
            }
            NameValueCollection queryString = request.HttpMethod == "POST" ? request.Form : request.QueryString;

            IQueryable <T> iqueryable = dataSource;

            Guard.IsNotNull(iqueryable, "DataSource", "should implement the IQueryable interface.");
            int    pageIndex     = this.GetPageIndex(queryString["page"]);
            int    num           = this.GetNum(queryString["rows"]);
            string text          = queryString["sidx"];
            string sortDirection = queryString["sord"];
            string parentRowID   = queryString["parentRowID"];
            bool   search        = (!string.IsNullOrEmpty(queryString["_search"]) && queryString["_search"] != "false");
            string filters       = queryString["filters"];
            string searchField   = queryString["searchField"];
            string searchString  = queryString["searchString"];
            string searchOper    = queryString["searchOper"];

            this.PagerSettings.CurrentPage = pageIndex;
            this.PagerSettings.PageSize    = num;
            if (search)
            {
                try
                {
                    if (string.IsNullOrEmpty(filters) && !string.IsNullOrEmpty(searchField))
                    {
                        iqueryable = iqueryable.Where(Util.GetWhereClause(this, searchField, searchString, searchOper));
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(filters))
                        {
                            iqueryable = iqueryable.Where(Util.GetWhereClause(this, filters));
                        }
                        else
                        {
                            if (this.ToolBarSettings.ShowSearchToolBar || search)
                            {
                                iqueryable = iqueryable.Where(Util.GetWhereClause(this, queryString));
                            }
                        }
                    }
                }
                catch (DataTypeNotSetException ex)
                {
                    throw ex;
                }
                catch (Exception)
                {
                    JsonResult jsonResult = new JsonResult();
                    jsonResult.JsonRequestBehavior = JsonRequestBehavior.DenyGet;
                    jsonResult.Data = new object();
                    return(jsonResult);
                }
            }
            int num2            = iqueryable.Count();
            int totalPagesCount = (int)Math.Ceiling((double)((float)num2 / (float)num));

            if (string.IsNullOrEmpty(text) && this.SortSettings.AutoSortByPrimaryKey)
            {
                if (this.Columns.Count == 0)
                {
                    throw new Exception("JQGrid must have at least one column defined.");
                }
                text          = Util.GetPrimaryKeyField(this);
                sortDirection = "asc";
            }
            if (!string.IsNullOrEmpty(text))
            {
                iqueryable = iqueryable.OrderBy(this.GetSortExpression(text, sortDirection));
            }
            iqueryable = iqueryable.Skip((pageIndex - 1) * num).Take(num);
            this.OnDataResolved(new JQGridDataResolvedEventArgs(this, iqueryable, this.DataSource as IQueryable));
            if (this.TreeGridSettings.Enabled)
            {
                JsonTreeResponse response = new JsonTreeResponse(pageIndex, totalPagesCount, num2, num, iqueryable.Count(), Util.GetFooterInfo(this));
                return(Util.ConvertToTreeJson(response, this, iqueryable));
            }
            JsonResponse response2 = new JsonResponse(pageIndex, totalPagesCount, num2, num, iqueryable.Count(), Util.GetFooterInfo(this));

            return(Util.ConvertToJson(response2, this, iqueryable));
        }
Пример #2
0
 private AjaxCallBackMode ResolveAjaxCallBackMode()
 {
     if (this.IsGridRequest())
     {
         string text = HttpContext.Current.Request.Form["oper"];
         string value = this.QueryString["editMode"];
         string value2 = this.QueryString["_search"];
         this._ajaxCallBackMode = AjaxCallBackMode.RequestData;
         string a;
         if (!string.IsNullOrEmpty(text) && (a = text) != null)
         {
             if (a == "add")
             {
                 this._ajaxCallBackMode = AjaxCallBackMode.AddRow;
                 return this._ajaxCallBackMode;
             }
             if (a == "edit")
             {
                 this._ajaxCallBackMode = AjaxCallBackMode.EditRow;
                 return this._ajaxCallBackMode;
             }
             if (a == "del")
             {
                 this._ajaxCallBackMode = AjaxCallBackMode.DeleteRow;
                 return this._ajaxCallBackMode;
             }
         }
         if (!string.IsNullOrEmpty(value))
         {
             this._ajaxCallBackMode = AjaxCallBackMode.EditRow;
         }
         if (!string.IsNullOrEmpty(value2) && Convert.ToBoolean(value2))
         {
             this._ajaxCallBackMode = AjaxCallBackMode.Search;
         }
     }
     return this._ajaxCallBackMode;
 }