如何提高ASP.NET中GridView或DetailsView的效率?
在 ASP.net 中,当我们通过 Gridview 或 DetailsView 执行分页时,Gridview 每次都会从数据库中获取所有行。
假设我们的数据库包含 100 行,并且我们在 Gridview 中配置了分页,页面大小为每页 10 条记录。但是每当我们单击任何特定页面的 gridview 的分页器控件时。那么 GridView 应该只从数据库中获取特定的 10 行。
如果我们点击第 3 页,那么它应该只查询第 21-30 行,但它会获取所有行并忽略剩余的行。这只是资源的浪费。
任何人都可以建议我解决这个问题吗?
In ASP.net when we perform paging over Gridview or DetailsView than the Gridview fetch all rows from the Database each time.
Suppose our Database contains 100 rows and we have configured Paging in Gridview with page size of 10 records per page.But whenever we click on the the pager control of gridview for any particular page no. then GridView should fetch only particular 10 rows from database.
If we click on page no 3 then it should query only rows 21-30 but it fetches all rows and neglect the remaining .which is simply a wastage of resources.
Can any one of please suggest me a solution to this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要实现这种优化的数据获取,您必须实现自定义分页(而不是使用 GridView 分页)。另外,您应该使用 SQL 来仅获取要在页面上显示的行(而不是所有数据)。
请参阅以下相关链接:
Asp.net 中的自定义分页
对大量数据进行分页在GridView中
如何按 ID 范围从表中获取特定行
在 SQL Server 中对大型数据集进行分页
To implement this optimized data fetch, you have to implement custom paging (rather than using the GridView paging). Also, you should use SQL to get only the rows that you want to show on a page (not all of the data).
See the following related links:
Custom Paging in Asp.net
Paging tons of data in GridView
How to get Specific rows From Table by Id Range
Paging Large Datasets in SQL Server
您可以使用 自定义分页ASP.NET 2.0 数据集。
另外,请查看 分页大型数据集
You can using custom paging in ASP.NET 2.0 datasets.
Also, checkout other ways of paging large datasets
如果您使用的是 Sql Server 2005+,您可以尝试使用 ROW_NUMBER 函数对数据库进行分页,如本文所述:
使用 SQL Server 2005 数据库分页记录 - ROW_NUMBER 函数
If you are using Sql Server 2005+, you could try using the ROW_NUMBER Function to page the database as explained in this article:
Paging Records Using SQL Server 2005 Database - ROW_NUMBER Function