1

我有一个大约 2000 行的数据视图。在页面加载时,我想将 dataview 绑定到对象 datagrid :

    dataGrid.DataSource = dv;
    dataGrid.DataBind();

然而,时间响应非常高(几分钟)。我该怎么做才能让它更快?或者至少我不能冻结客户端?

4

3 回答 3

2

首先检查您的查询。一旦你尽可能快地获得它(包括可能每晚在临时表或其他东西中预缓存数据),然后移动到 ASP.NET 代码并使其更快。

如果可以,请关闭网格的视图状态。视图状态将显着增加您的页面大小。您的部分问题将只是提供 MB 的原始 HTML 和视图状态,然后呈现它。

我会采取的步骤:

  1. 关闭网格的视图状态
  2. 如果您在列中使用模板,请尝试通过组合控件来减少它们,以减少发生的重复绑定的数量。
  3. 尽可能在模板中使用文字控件(比标签轻得多)
  4. 拉出所有样式并确保您也使用 css 来减小页面大小。
  5. 如果您的行有任何 javascript,请考虑删除任何内联脚本并在页面通过 Jquery 或其他方法加载后应用它。
  6. 考虑分页数据

您可以让 2k+ 条记录在一页上工作,但您必须使事情变得非常紧凑才能做到这一点。

最后一招,摆脱网格,只使用文字控件并直接向其输出原始、干净、紧凑的 html。在这种情况下,请务必关闭文字控件的视图状态。

于 2009-11-17T02:13:10.293 回答
0

检查从 dB 返回数据需要多长时间。如果不是太长,则问题可能在于尝试呈现 2000 行的页面。

如果是这样,分页将加快速度。

于 2009-11-16T14:18:37.227 回答
0

我会使用某种类型的默认过滤器减少您在查询中带回的项目数量。屏幕上的这么多数据通常会导致糟糕的用户体验,而默认过滤器会加快页面的渲染速度。如果用户要求 2000 行数据,那么让他们拥有它......但我会避免使用数据网格进行分页,因为分页会在执行查询后丢弃不在当前“页面”中的记录并带来返回所有 2000 条记录。因此,如果将分页设置为 20 项,则查询仍将带回所有 2000 条记录,并且每次用户请求新页面时,网格都会删除其他 1980 条记录...

于 2009-11-16T14:21:59.920 回答