У нас есть страница jquery.jtable, реализующая пейджинг. Мы заметили, что пейджинг не совсем работает. Например, если всего 17 элементов, на первой странице правильно отображается 10, а на второй — 7. Однако, если всего 20 элементов, на первой странице отображается 10, а на второй — только 8. Мы используем:
вернуть myQuery.Skip(startIndex).Take(pageSize).ToList()
На второй странице startindex = 10 и размер страницы = 10, и, как я уже сказал выше, возвращается только 8. Похоже, виновником является .Take. Я поместил оператор if прямо над кодом, заменив его следующим образом:
if (myQuery.Skip(startIndex).ToList().Count() <= pageSize)
{
return myQuery.Skip(startIndex).ToList();
}
На втором проходе If возвращает true, так как и count, и pagesize равны 10. Возврат здесь действительно возвращает все 10 строк второй страницы. Меня беспокоит то, что если полный набор myQuery велик, это может вызвать проблемы с ресурсами. К счастью, эта конкретная таблица содержит небольшое количество строк.
Кто-нибудь еще сталкивался с этим и нашел лучшее решение?