2 chx197 chx197 于 2016.04.19 18:02 提问

C#控件DataGridView 用逐行添加数据的方式 加载速度奇慢无比 求解答

大概1000条 16列 如果把数据放到Dataset中然后绑定DataSource 加载基本是瞬间完成,速度很快。
但是如果
foreach{
DataGridViewRow dgvr = this.dataGridView1.Rows[this.dataGridView1.Rows.Add()];
dgvr.Cells["productName"].Value = ps.Name;
...................
...................
}

这样逐行添加的话那速度慢到无法忍受,大概30秒左右才完全加载完,并且CPU占用率超高。请问是哪里出了问题?

AutoSizeColumnsMode 和AutoSizeRowsMode 都为none

说分页的、说减少数据的就请免于回答了,我只是想找出问题所在,就是两种方法之间差距的具体原因。

4个回答

caozhy
caozhy   Ds   Rxr 2016.04.19 18:30
已采纳

加上
dataGridView1.Visible = false;
你的加载代码
dataGridView1.Visible = true;
看看

chx197
chx197   2016.04.19 19:02

加上
dataGridView1.Visible = false;
你的加载代码
dataGridView1.Visible = true;

看看

还是挺慢的

chx197
chx197   2016.04.19 19:28

已经大概找到原因了,因为逐行添加的话需要大量的重绘工作,而又用了devexpress控件的皮肤,重绘异常的慢,实用自带控件,不适用任何皮肤的情况下两者速度差距不大

u010919083
u010919083   2016.07.22 10:58
写线程加载!
你可以写个委托对数据的Datagridview 控件进行刷新这样的话就看起来是 逐行加载的了 而且效率还高 
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!