0

我们有一个实现分页的 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。这里的 return 确实返回了第二页的所有 10 行。我担心的是,如果完整的 myQuery 集很大,这可能会导致资源问题。幸运的是,这个特定的表包含的行数很少。

有没有其他人遇到过这个并找到了更好的解决方案?

4

1 回答 1

0

你派生 startIndex 的方式一定是罪魁祸首。尝试这个:

return myQuery.Skip((pageNumber - 1 ) * pageSize).Take(pageSize).ToList();

编辑:

并确保 pageNumber 永远不会超过最大可能的页码。

var maxPages = maxRecords / pageSize + (maxRecords % pageSize > 0 ? 1 : 0);

因此,例如,您有一种方法可以仅检索特定页面所需的记录:

public List<SomeEntity> GetSomeEntityForPage(int pageNumber, int pageSize)
{
    return myQuery.Skip((pageNumber - 1 ) * pageSize).Take(pageSize).ToList(); 
}
于 2015-10-02T16:35:02.327 回答