DataGridView重绘缓慢

本文关键字:缓慢 DataGridView | 更新日期: 2023-09-27 18:07:44

我昨天发了这个帖子,因为我怀疑我写的一个LINQ-to-SQL查询非常慢。我正在做的是迭代我的查询结果,并从中构建一个数据表。然后,我将DataTable绑定到我的表单上的DataGridView。

我认为查询是缓慢的部分,但我已经反驳了这一点-查询,也是数据表的建设,最多需要一秒钟或两秒钟,但是当我在DataGridView上设置DataSource属性时,应用程序似乎在显示网格之前挂起了大约10秒。

我试过使用反射在DGV上设置DoubleBuffered属性,但遗憾的是没有什么不同。有人遇到过类似的问题吗?

编辑:注意,如果网格有少量的行(即30-40),它会很好地工作。一旦行数达到数百,它就停止

DataGridView重绘缓慢

跟踪生成的SQL。最有可能的是,它确实是延迟加载,导致每行有一个或多个额外的sql语句(这与您描述的行为一致)。

您可以从数据上下文中记录SQL,或者您可以使用SQL server profiler查看正在生成的SQL。

如果确实是延迟加载,您可以使用数据上下文的DataLoadOptions来覆盖默认的延迟加载行为。示例(这将加载每个客户的所有订单)

DataLoadOptions options = new DataLoadOptions();
options.LoadWith<Customer>(Customer => Customer.Orders);
db.LoadOptions = options;

在本例中,您将看到Linq2sql

生成一个连接

vinfo: http://msdn.microsoft.com/en-us/library/system.data.linq.dataloadoptions.aspx