我有一个大约 2000 行的数据视图。在页面加载时,我想将 dataview 绑定到对象 datagrid :
dataGrid.DataSource = dv;
dataGrid.DataBind();
然而,时间响应非常高(几分钟)。我该怎么做才能让它更快?或者至少我不能冻结客户端?
首先检查您的查询。一旦你尽可能快地获得它(包括可能每晚在临时表或其他东西中预缓存数据),然后移动到 ASP.NET 代码并使其更快。
如果可以,请关闭网格的视图状态。视图状态将显着增加您的页面大小。您的部分问题将只是提供 MB 的原始 HTML 和视图状态,然后呈现它。
我会采取的步骤:
您可以让 2k+ 条记录在一页上工作,但您必须使事情变得非常紧凑才能做到这一点。
最后一招,摆脱网格,只使用文字控件并直接向其输出原始、干净、紧凑的 html。在这种情况下,请务必关闭文字控件的视图状态。
检查从 dB 返回数据需要多长时间。如果不是太长,则问题可能在于尝试呈现 2000 行的页面。
如果是这样,分页将加快速度。
我会使用某种类型的默认过滤器减少您在查询中带回的项目数量。屏幕上的这么多数据通常会导致糟糕的用户体验,而默认过滤器会加快页面的渲染速度。如果用户要求 2000 行数据,那么让他们拥有它......但我会避免使用数据网格进行分页,因为分页会在执行查询后丢弃不在当前“页面”中的记录并带来返回所有 2000 条记录。因此,如果将分页设置为 20 项,则查询仍将带回所有 2000 条记录,并且每次用户请求新页面时,网格都会删除其他 1980 条记录...