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

ASP.NET/Javascript:在浏览器中加载大量数据,asp.net,javascript,Asp.net,Javascript,我有一个GUI,可以显示客户订单。当我的客户确定要求时,他要求我保持这样的分页 每页显示项目:10/50/150 对于每个客户,可能有数千个订单,每个订单至少有50个属性显示在屏幕上。因此,假设有一个50列的html表,其中有2000或3000条与之关联的记录,跨越多个数据库表(无论如何,这是一个不同的故事) 直到昨天一切都很轻松,现在我的客户提出了新的更改请求,他指定了如下显示项目 每页显示项目:10/50/150/全部 是的,他想通过选择“全部”选项查看2000或3000条记录。在内部,这不

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

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

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

直到昨天一切都很轻松,现在我的客户提出了新的更改请求,他指定了如下显示项目

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

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

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

我还尝试使用Javascript在ajax调用中准备DOM,但插入2000TDS仍然非常慢

非常感谢您的帮助

一些额外信息

  • 此应用程序是intranet应用程序,或者通过VPN连接访问

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

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

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


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

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


    但最好的解决方案是说服您的客户—这不是web应用程序的工作方式。我们也遇到过类似的情况—纯粹是噩梦。

    这个问题与浏览器性能有关。
    我想你可以做两件事。
    1) 您可以使用
    而不是
    (这在CSS中是可能的),因为浏览器在关闭标记之前不会呈现表格。因此加载页面需要很长时间,但会更快地呈现第一个结果。

    2) 如果您使用Ajax+Json并逐段渲染每个
    ,则可以渲染整个内容,而只需将其放入DOM即可。这将更快,因为浏览器不会在每次放置另一行时进行渲染。

    此问题与浏览器性能有关。
    我想你可以做两件事。
    1) 您可以使用
    而不是
    (这在CSS中是可能的),因为浏览器在关闭标记之前不会呈现表格。因此加载页面需要很长时间,但会更快地呈现第一个结果。

    2) 如果您使用Ajax+Json并逐段渲染每个
    ,则可以渲染整个内容,而且只需将其放入DOM即可。这将更快,因为浏览器不会在每次放置另一行而不是ASP.NET GridView时进行渲染,您最好使用DataRepeater。 更好的是,如果你不受技术的限制,你可以使用with。你只需要找到一些黑客从服务中“流”出数据并显示它。
    还有一种(如果您不想使用Microsoft Ajax Preview 4)支持JSON序列化。

    最好使用DataRepeater,而不是ASP.NET GridView。 更好的是,如果你不受技术的限制,你可以使用with。你只需要找到一些黑客从服务中“流”出数据并显示它。
    还有(如果您不想使用MicrosoftAjax预览4)它支持JSON序列化。

    你也可以在一个带有微调器图形的模式屏幕上告诉他们它正在加载……我认为没有任何简单的方法可以加载这么多data@Jason:但通过一次加载表15行,他将看到,全部。如果他从上到下扫描,则不会出现性能问题。Firefox的
    paginator
    插件就是这样工作的,而且非常好。:
    slashdot
    在你到达页面末尾时也会做类似的事情(尽管那里真的很糟糕).你也可以把一个带有旋转器图形的模式屏幕放上去,告诉他们它正在加载…我认为没有任何简单的方法可以加载这么多data@Jason:但通过一次加载15行,他将看到所有。如果他从下到下扫描,则不会出现性能问题。Firefox的
    paginator
    plugin的工作方式非常类似,非常好。:
    slashdot
    在到达页面末尾时也会执行类似的操作(尽管那里非常糟糕)。谢谢,我不知道浏览器在关闭标记之前不会呈现表。:)或者您可以创建一个表并动态添加数据。这样,行将