public JsonResult Search(GridSettings gridSettings) { DataItemSearchFilter filter = new DataItemSearchFilter(); if (gridSettings.IsSearch) { filter.Title = gridSettings.Where.rules.Any(r => r.field == "Title") ? gridSettings.Where.rules.FirstOrDefault(r => r.field == "Title").data : string.Empty; filter.AuthorName = gridSettings.Where.rules.Any(r => r.field == "Author") ? gridSettings.Where.rules.FirstOrDefault(r => r.field == "Author").data : string.Empty; filter.CountryName = gridSettings.Where.rules.Any(r => r.field == "Country") ? gridSettings.Where.rules.FirstOrDefault(r => r.field == "Country").data : string.Empty; filter.SubMenuName = gridSettings.Where.rules.Any(r => r.field == "SubMenuName") ? gridSettings.Where.rules.FirstOrDefault(r => r.field == "SubMenuName").data : string.Empty; } int totalRecords = 0; var items = dataItemService.Search(filter, gridSettings.SortColumn, gridSettings.SortOrder, gridSettings.PageSize, gridSettings.PageIndex, out totalRecords); var jsonData = new { total = totalRecords / gridSettings.PageSize + 1, page = gridSettings.PageIndex, records = totalRecords, rows = ( from a in items select new { ID = a.ID, Title = a.Title, SubMenuName = a.MainMenu.CodeName + " > " + a.SubCategory.CodeName, Country = a.Country.CodeName, InsertDate = a.CreatedDate, EditDate = a.LastUpdatedDate, Author = a.CreatedUser.FullName } ) }; JsonResult result = Json(jsonData); return(result); }