chx197
chx197
2016-04-19 10:02
采纳率: 100%
浏览 4.6k
已采纳

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
    已采纳

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

    点赞 评论
  • chx197
    chx197 2016-04-19 11:02

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

    看看

    还是挺慢的

    点赞 评论
  • chx197
    chx197 2016-04-19 11:28

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

    点赞 评论
  • u010919083
    写线程加载!
    你可以写个委托对数据的Datagridview 控件进行刷新这样的话就看起来是 逐行加载的了 而且效率还高 
    
    点赞 评论

相关推荐