ASP.NET / JavaScript:在浏览器中加载大量数据

时间:2009-08-11 06:19:27

标签: asp.net javascript

我有这个GUI显示,让我们说客户订单。当我的客户确定要求时,他要求我保持这样的分页,

  

每页显示的项目:10/50/150

对于每个客户,可能有数千个订单,每个订单将至少有50个属性显示在屏幕上。因此,假设一个50列html表,其中包含2000或3000个与之关联的记录,跨越多个数据库表(无论如何,这是一个不同的故事)

直到昨天,事情变得轻而易举,现在我的客户已经提出了新的变更请求,因为他指定了这样的Show Items,

  

每页显示的项目:10/50/150 / 全部

是的,他只想选择“全部”选项即可查看2000或3000条记录。在内部,这不是一个很大的改变,我会回去删除我在rowcount等上应用的过滤器,但是当它加载到GUI时它确实糟透了......视图状态很大等等,

我知道,这是一个标准问题。你们怎么处理它?我不能说服我的客户删除这个“全部”选项,他坚持下去。 (原因很简单,他有一个42英寸的大屏幕,他可以在一个页面上轻松看到1000个项目)

我还尝试使用javacript在ajax调用中准备DOM ..但是,插入2000个TD仍然很慢。

非常感谢任何帮助。

一些额外信息

  1. 此应用程序是Intranet应用程序,或通过VPN连接访问

4 个答案:

答案 0 :(得分:3)

此问题与浏览器性能有关 我想你可以做两件事 1)您可以使用<div>而不是<table>(这可以使用CSS),因为浏览器在关闭标记之前不会呈现表格。因此加载页面需要很长时间,但它会更快地呈现第一个结果 2)如果你使用Ajax + Json并逐个渲染每个<tr>,你可以渲染整个东西而不是把它放在DOM中。这会更快,因为每次放入另一行时浏览器都不会渲染

答案 1 :(得分:2)

如果您愿意,可以按分期付款方式加载数据。有点像分页是如何工作的,但准确的说并不是很划分。您可以使用正确的ID标记分期付款/页面。通过ajax调用一个接一个地加载页面。您甚至可以显示进度条以显示实际加载的数据量。将此数据附加到您正在显示数据的表中。我不会为此使用服务器控件...您必须通过javascript或jquery处理此问题。

答案 2 :(得分:1)

您可能希望以递增方式追加表格行 当客户端滚动到页面底部 - 触发ajax调用时,返回下一页并呈现它。

但最好的解决方案是说服您的客户 - 这不是Web应用程序的工作方式。我们有类似的情况 - 纯粹的噩梦。

答案 3 :(得分:0)

您最好使用DataRepeater而不是ASP.NET GridView。 更好的是,如果您不受技术限制,可以将Microsoft Ajax Preview 4WCF REST Services一起使用。您只需要找到一些黑客来“流”来自服务的数据并显示它。 还有JQuery Grid(如果你不想使用Microsoft Ajax Preview 4)支持JSON序列化。