Я использую следующий метод, чтобы получить данные для моей подсетки jqgrid, и он отлично работает.
Обратите внимание, что этот метод используется для реализации сортировки и разбиения по страницам на стороне сервера.
Теперь у меня есть запрос, как вы можете видеть в строке
List<SomeEntity> myList = _service.GetSomeData(id);
здесь выполняется вызов базы данных и извлекаются все записи.
Так что я был просто не очень уверен, поэтому я просто хотел знать, соответствует ли это передовой практике реализации подкачки на стороне сервера и
public JsonResult GetData(string folderId, string sidx, string sord, int page, int rows) {
int id = int.Parse(folderId);
List < SomeEntity > myList = _service.GetSomeData(id);
const int pageSize = 5;
// total
double totalPages = Math.Ceiling((double) myList.Count() / pageSize);
// sort
if (sord == "asc") {
myList = myList.OrderBy(m = > m.Name).ToList();
}
else {
myList = myList.OrderByDescending(m = > m.Name).ToList();
}
// paging
myList = myList.Skip((page - 1) * pageSize).Take(pageSize).ToList();
var jsonData = new {
total = totalPages, records = domainList.Count, page,
rows = myList
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
_service.GetSomeData(id)
. Используете ли вы Entity Framework или LINQ To SQL? Какой тип возвращает_service.GetSomeData(id)
? Ни в коем случае вы не должны преобразовывать_service.GetSomeData(id)
вList<T>
для обработки подкачки и сортировки **на стороне SQL-сервера, а не в вашей программе на C#, как вы делаете сейчас. - person Oleg   schedule 21.09.2012only the very first page request receives the largest amount of data
ТОЧНО! Первая страница будет просматриваться чаще, чем все остальные вместе взятые. Люди обычно находят то, что им нужно, на первой странице большинства результатов с разбивкой на страницы в целом и добавляют к этому людей, переходящих на страницу, когда им вообще не нужно было просматривать результаты (попали не на ту страницу, не знали, что именно). был там, просто осматривался и т. д.). Первая страница любого набора данных с разбивкой на страницы должна быть максимально оптимизирована. - person Servy   schedule 21.09.2012