DataGridView重绘速度慢

时间:2011-09-07 09:14:30

标签: c# winforms linq-to-sql datagridview

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

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

我尝试使用反射在DGV上设置DoubleBuffered属性,但遗憾的是它没有任何不同。还有其他人遇到过这样的问题吗?

编辑:注意,如果网格有少量行(即30-40),它就可以了。一旦行数达到数百,它就会停止

1 个答案:

答案 0 :(得分:0)

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

您可以从datacontext中记录SQL,也可以使用sql server profiler查看正在生成的sql。

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

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

因此,在这种情况下,您将看到Linq2sql生成的连接

v更多信息:http://msdn.microsoft.com/en-us/library/system.data.linq.dataloadoptions.aspx