private JsonResult FilterDataSource(object dataSource, NameValueCollection queryString, out IQueryable iqueryable) { iqueryable = (dataSource as IQueryable); Guard.IsNotNull(iqueryable, "DataSource", "should implement the IQueryable interface."); int num = Convert.ToInt32(queryString["page"]); int num2 = Convert.ToInt32(queryString["rows"]); string text = queryString["sidx"]; string str = queryString["sord"]; string arg_5E_0 = queryString["parentRowID"]; string text2 = queryString["_search"]; string text3 = queryString["filters"]; string text4 = queryString["searchField"]; string searchString = queryString["searchString"]; string searchOper = queryString["searchOper"]; this.PagerSettings.CurrentPage = num; this.PagerSettings.PageSize = num2; if (!string.IsNullOrEmpty(text2) && text2 != "false") { try { if (string.IsNullOrEmpty(text3) && !string.IsNullOrEmpty(text4)) { iqueryable = iqueryable.Where(Util.GetWhereClause(this, text4, searchString, searchOper), new object[0]); } else { if (!string.IsNullOrEmpty(text3)) { iqueryable = iqueryable.Where(Util.GetWhereClause(this, text3), new object[0]); } else { if (this.ToolBarSettings.ShowSearchToolBar || text2 == "true") { iqueryable = iqueryable.Where(Util.GetWhereClause(this, queryString), new object[0]); } } } } catch (DataTypeNotSetException ex) { throw ex; } catch (Exception) { return(new JsonResult { Data = new object(), JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } } int num3 = iqueryable.Count(); int totalPagesCount = (int)Math.Ceiling((double)((float)num3 / (float)num2)); 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); str = "asc"; } if (!string.IsNullOrEmpty(text)) { string text5 = ""; if (this.GroupSettings.GroupFields.Count > 0) { string str2 = text.Split(new char[] { ' ' })[0]; string str3 = text.Split(new char[] { ' ' })[1].Split(new char[] { ',' })[0]; text = text.Split(new char[] { ',' })[1]; text5 = str2 + " " + str3; } if (text != null && text == " ") { text = ""; } if (!string.IsNullOrEmpty(text)) { if (this.GroupSettings.GroupFields.Count > 0 && !text5.EndsWith(",")) { text5 += ","; } text5 = text5 + text + " " + str; } iqueryable = iqueryable.OrderBy(text5, new object[0]); } iqueryable = iqueryable.Skip((num - 1) * num2).Take(num2); DataTable dataTable = iqueryable.ToDataTable(this); this.OnDataResolved(new JQGridDataResolvedEventArgs(this, iqueryable, this.DataSource as IQueryable)); if (this.TreeGridSettings.Enabled) { JsonTreeResponse response = new JsonTreeResponse(num, totalPagesCount, num3, num2, dataTable.Rows.Count, Util.GetFooterInfo(this)); return(Util.ConvertToTreeJson(response, this, dataTable)); } JsonResponse response2 = new JsonResponse(num, totalPagesCount, num3, num2, dataTable.Rows.Count, Util.GetFooterInfo(this)); return(Util.ConvertToJson(response2, this, dataTable)); }