asp.net 中的分页
您好,我有一个包含 100000 行数据的表。 现在我想以页面大小 50 的用户形式呈现我的数据。
呈现它的最佳方法是什么。 我应该选择数据列表吗? 或者我可以实现自己的选择查询,以便每次按下“下一步”按钮时获取 50 条记录吗?
提前致谢
Hi I've a table with 100000 rows of data. Now i want to present my data in user form with page size 50.
What is the best approach to present it. Shall i preffer datalist? or can i implement my own select query for getting 50 records each time when i press next button?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
“ListView”和“DataPager”怎么样?
what about "ListView" and "DataPager" ?
我会使用 pagedDataSource 然后你可以绑定到转发器、数据列表或其他东西。
这里有一个示例。
I would use a pagedDataSource then you can bind to a repeater, datalist or whatever.
there is and example here.
我为 asp.net 创建了一个分页控件。 这是一个基本的控制,但它可能会对您有所帮助。 基本寻呼机控件
I've created a paging control for asp.net. It's a basic control but it may help you. Basic Pager Control
对于100000条来说,从数据库中获取所有记录到数据集中然后对它们进行分页将是非常耗时的。 相反,我会在数据库存储过程/查询中实现分页。 这样前端代码一次只会检索 50 条记录,用户响应会更快。
For 100000, it will be very time consuming to get all the records from the database into the dataset and then page them. Instead I would go with implementing paging in the database stored procedure/ query. That way only 50 records would be retrieved in the front end code at a time and user response would be faster.
如果您打开
AllowPaging
并将PageSize
设置为 50,则可以使用 GridView 轻松完成此操作。但是这将是可怕的 效率低下 - 每次您移动到新页面时,它都会读取所有 1 000 000 行,找出需要显示的 50 行,然后丢弃其余的。相反,您需要的是数据库中的一个存储过程,它获取您想要显示的页码,计算出该页面上的行集并将它们返回到 ASP.NET 页面。 如果您使用的是 SQL Server 2005 或更高版本,则最好的选择是使用公共表表达式,因此您的存储过程将如下所示(这是针对 Northwind 数据库):
现在,回到您的页面。 您需要放入 DataGrid - 它们对自定义分页的支持比其他任何东西都更好 - 并将
AllowCustomPaging
设置为 True。 您可能会发现使用一种使用页码调用存储过程的方法更容易,然后您可以添加上一个、下一个、第一个、最后一个、+10、-10 按钮 - 无论您想要什么,只需计算出页码并通过它的方法。You could do this quite easily with a GridView if you switch on
AllowPaging
and set thePageSize
to 50. But it will be horribly inefficient - every time you move to a new page it'll read all 1 000 000 rows, work out which 50 it needs to display, and throw the rest away.What you want instead is a stored proc in your database that takes the page number that you want to display, works out the set of rows on that page and returns them to the ASP.NET page. If you're using SQL Server 2005 or later your best bet is to use a Common Table Expression, so your stored proc will look something like this (this is for the Northwind db):
Now, back to your page. You'll need to put in a DataGrid - they have better support for custom paging than anything else - and set
AllowCustomPaging
to True. You might find it easier to have one method that calls your stored proc with the page number, then you can add Previous, Next, First, Last, +10, -10 buttons - whatever you want, just work out the page number and pass it to the method.