分页大数据集

时间:2013-09-13 12:23:58

标签: c# asp.net paging data-paging

我有一个项目,用户需要循环约。 100,000张照片并为每张照片指定PhotoType ID。

项目要求是屏幕上只显示一张照片,所以基本上这意味着有100,000个页面可以容纳1个项目。

启动此项目的最佳方式是什么,显然使用ViewState或完整页面重新加载会浪费资源?

我正在考虑将数据序列化为客户端脚本变量,然后使用Page Methods进行播放。我正在使用c#asp.net。

如果您有任何想法或更好的方法,请告诉我。

2 个答案:

答案 0 :(得分:0)

对于如此大量的数据,您需要更改策略。首先,您不能只将100k的记录加载到DataSet。您需要在服务器端进行分页(并且仅从存储过程返回所需的单个记录)。如果每页只显示一张图片,则甚至不需要数据集。就ViewState而言 - 我会完全禁用它。您可以将当前页面存储在隐藏字段中,并使用处理程序显示照片。此外,使用AJAX来获取下一张/上一张照片..尽可能让它变得轻巧。

答案 1 :(得分:0)

下一个和前一个按钮是简单的HTML元素,带有一些很酷的CSS类。事件处理程序(当用户单击下一个/上一个按钮时)将使用JavaScript。当前索引(活动照片ID)可以位于隐藏字段中,您将在每次点击事件后更新(当点击下一个时,然后idx + = 1,idx - =上一次点击)。在此之后,您需要从数据库中检索照片(仍然在javaScript事件中)。我建议WCF或ASMX Web服务返回http处理程序的URL(我假设您使用处理程序将varbinary图像字段显示为html)。此外,在这些点击之前,您可以显示一些不错的ajax进度gif动画......并且Web服务本身将调用存储过程,该存储过程将从数据库返回适当的图像(因此基于活动索引值仅需要1个记录)。所以最后 - 你只需要:存储过程,很少的java脚本代码行,处理程序,Web服务。没有ASP网格或数据集或任何需要迭代100k的记录。这对你的表现来说是一个杀手锏。希望这有助于为您指明正确的方向。