【问题标题】:Paging a large table without postbacks in .NET MVC and EF在 .NET MVC 和 EF 中分页没有回发的大表
【发布时间】:2015-12-23 08:40:13
【问题描述】:

我有一个包含几百万条记录的大表。

有一个 MVC5 解决方案并使用 PagedList.MVC 和 Entity Framework 我有一个页面显示带有排序和过滤器的分页表。

但是每个过滤器和页面更改操作都需要回发。

有没有办法在不将整个表预加载到内存的情况下防止回发?

【问题讨论】:

  • 如果你想坚持使用 PagedList 就不行。您需要一个 AJAX 解决方案,但它不是。
  • 我很高兴改用不同的解决方案。那会是什么?
  • 回发是什么意思?你的意思是整页刷新还是直接访问服务器?
  • 我的意思是整页刷新,抱歉。我的分页工作高效,我只是不想在选择过滤器、重新排序或移动页面时刷新页面。

标签: c# asp.net asp.net-mvc entity-framework pagination


【解决方案1】:

既然您发表了评论,那么您对不同的解决方案持开放态度,为什么不执行以下操作:

1) 假设大表在某个数据库中。更新您的过程以作为参数、gridview 中每页的行数以及您在 gridview 中查看的当前页面索引

2) 更新过程以仅返回用户使用上述参数所在的特定页面的行。还以 int 形式返回总行数,这样您就可以计算 gridview 中需要多少页。考虑在会话中缓存它,这样您只需要查询一次总数。

这样做会使 gridview 的更新速度非常快,因为该过程只会返回您需要在当前页面上显示的行。

【讨论】:

  • 虽然 OP 说“回发”,但 OP 并不是指回发,因为这是 ASP.NET MVC,而不是 ASP.NET WebForms。因此,您的更新面板建议在这种情况下不起作用。
  • 谢谢我更新了我的答案以排除该部分。我认为让程序只返回您需要显示的行的部分应该仍然有帮助。
  • 谢谢你,但我已经用类似的方式进行了分页。结果很快 - 我只是想避免整页刷新。抱歉称其为“回发”-我还是 MVC 的新手 :)
猜你喜欢
  • 1970-01-01
  • 2023-03-17
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多