Я действительно понял, как это сделать, не загружая сетку, а затем загружая последнюю страницу (так что вы загружаете сетку только один раз).
Когда вы запускаете jqGrid, вам нужно сделать:
$('#list').jqGrid({
...
page: 'last'
...
});
Это отправит страницу = последний при начальной загрузке данных. Итак, внутри моего метода запроса данных (на стороне сервера) у меня есть следующее:
if (page == "last")
{
iPage = (int)Math.Ceiling(results.Count/(double)rows);
}
Теперь вы знаете, какой будет последняя страница, и можете пропустить нужное количество строк:
results.Skip(rows * (iPage - 1)).Take(rows)
Поскольку я использую json, а не XML, я затем возвращаю типичную структуру (строки, страницы, общее количество страниц, общее количество записей) в виде json.