Asp.net将大数据视图绑定到DataGrid

时间:2009-11-16 14:14:17

标签: asp.net datagrid dataview

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

我会采取的步骤:

  1. 关闭网格的视图状态
  2. 如果您在列中使用模板,请尝试通过组合控件来减少模板,以减少重复绑定的数量。
  3. 尽可能在模板中使用文字控件(明显比标签轻)
  4. 拉出所有样式,并确保使用css来降低页面大小。
  5. 如果您的行有任何javascript,请考虑删除任何内联脚本,并在页面通过Jquery或其他方法加载后应用它。
  6. 考虑分页数据
  7. 你可以在一个页面上获得2k +记录,但是你必须做得非常紧张。

    最后,摆脱网格,只需使用文字控件,直接输出原始,干净,紧凑的HTML。在这种情况下,请务必关闭文字控件的viewstate。

答案 1 :(得分:0)

检查从dB返回数据所需的时间。如果它不是太长,问题可能在于尝试渲染2000行的页面。

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

答案 2 :(得分:0)

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