Web应用程序中的高效分页

本文关键字:高效 分页 应用程序 Web | 更新日期: 2023-09-27 18:22:42

我是web应用程序分页的新手。我在网上搜索了一下,发现了很多关于网站页面的教程(在VS中创建新网站)。我不能使用当前在vs中启用分页的方法,这可以很容易地完成,因为它不是有效的&从数据库中检索整个数据表。

默认分页--只需选中数据Web控件的智能标记中的EnablePaging选项即可实现。但是,每当查看数据页时,ObjectDataSource都会检索所有记录,即使页中只显示其中的一个子集。

自定义分页--通过仅从数据库中检索用户请求的特定数据页必须显示的那些记录,改进了默认分页的性能。然而,与默认分页相比,自定义分页需要花费更多的精力来实现。

我正在为web应用程序寻找一个自定义页面,希望你们能帮我。我发现了2个链接,我认为这可能是自定义分页,但我不确定代码的哪一部分是这样说的,所以如果你能告诉我代码的哪部分实际上使它有效,那就太好了,谢谢!

这两个链接是http://www.codeproject.com/Articles/170921/MvcContrib-Grid-Paging-and-Searching-in-ASP-NET-MV和http://blogs.msdn.com/b/codefx/archive/2009/09/07/how-to-implement-insert-edit-delete-paging-and-sorting-functions-in-an-asp-net-gridview-control.aspx?CommentPosted=true#commentmessage

再次感谢!

Web应用程序中的高效分页

我不相信你的任何一个链接都能证明有效的分页

链接1-LINQ示例为了做到这一点,我希望看到形式的东西

var myDataSource = data.Select(x => x.Parameter = "input").Skip(1).Take(10);

其原理是,"跳过并采取"方法只检索您想要的数据页面

链接2-SQL示例

同样,我不相信——我希望在SQL中看到一些使用ROW_OVER()的东西,或者SQL只带回您想要的数据页的其他证据。这个链接给出了一个在SQLServer2005中使用ROW_OVER的例子(2008年可能有所改进——我不知道TBH——其他人可能和我都感兴趣)。

一般

如果你有ASP.Net 3.5或更高版本,我会使用LINQ示例——这比在SQL 中尝试更直接

这个链接提供了一个更好的例子,它使用带有Take和Skip运算符的LINQ对ListView进行高效分页。它还解决了必须获得记录总数才能显示页数的问题,这是一个常见的要求。

此外,这个SO问题提供了一些非常好的高效分页示例,所以我建议您阅读。

LINQ警告

正如下面的评论者所指出的那样,你需要确保skip和take是在数据库上执行的,而不是在客户端上执行的整个数据集。Profiler是您的好友。同样值得了解的是,哪些操作员实现了查询并将其发送到数据库。

var myDataSource = data.Select(x => x.Parameter = "input").Skip(1).Take(10);

可能高于正常

var myDataSource = data.Select(x => x.Parameter = "input")
                                  .ToList().Skip(1).Take(10);

哦,不好。ToList()方法将导致在Skip和Take完成其工作之前向数据库触发SQL。