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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c# Form中向DataGridView控件添加数据的三种方式
c# Form中向DataGridView控件添加数据的三种方式1.利用SqlDataAdapter对象向DataGridView中添加数据using (SqlDataAdapter da = new SqlDataAdapter("select * from Product", DBService.Conn)) { DataSet ds = new DataSet(); d
关于DataGridView 控件单元格数据操作
单击一个按钮用该方法把最后一行指定单元格列数据填充给新增一行指定列,填充之后修改给那些提问这类问题的看看,列出了2种截取字符串的方法,看代码: private void 预填数据() { int 行数 = 搜索.RowCount - 1; for (int 填 = 0, 列数 = 搜索.ColumnCount;
VB.NET逐行(一行一行)向DataGridView数据控件中添加数据
<br /><br />在网络上很有看到逐行(一行一行)向DataGridView数据控件中添加数据,在这里我写了一个范例,可供大家参考!希望对有用到的同志有用。。。。<br /> <br />Dim AddDataSet As New DataSet() '实例化一个 DataSet数据集<br />        Dim AddRow As DataRow   '实例化一个DataRow数据行<br />        Dim RowValues(7) As Object  '定义一维数组<br
C# datagridview插入数据慢的一个问题
c# winform 中datagridview 绑定 datatable 以后插入一行记录要20毫秒?求解释,求高效     在C# winform 程序中,先建立了一个datagridview用来显示数据,datagridview的数据源是一个datatable(在这里绑定了datatable)。当有新的一行的时候,直接插入datatable。但,当我测试时,发现在将一行新记录(一行有50列
在Winform中向DataGridView控件添加数据的三种方式
原文链接:http://blog.163.com/qqabc20082006@126/blog/static/229285252009728115659418/ 在Winform中向DataGridView控件添加数据很常用到,现总结3种填充DataGridView方法: 1.利用SqlDataAdapter对象向DataGridView中添加数据 关键代码:(可以将该代码放到窗
向DataGridView控件添加数据
在Winform中向DataGridView控件添加数据很常用到,现总结3种填充DataGridView方法: 1.利用SqlDataAdapter对象向DataGridView中添加数据  关键代码:(可以将该代码放到窗体加载事件的方法中) using (SqlDataAdapter da = new SqlDataAdapter("select * from Product"
C# DataGridView手动添加数据
开发环境:VS2008 .Net版本:.Net Framework 2.0 最终效果图片: 源码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;
Winform传统DataGridView和DevExpress控件的GridControl两者表头全选功能的实现
Winform传统DataGridView和DevExpress控件的GridControl两者表头全选功能的实现(源码提供) 在开发一个个人项目的时候,有客户反映默认GridView多选操作不是很方便和理想,想在列表的左边增加一列可以勾选,并且最好支持列表头部全选的操作,否则数据多的时候一个个勾选要到天荒地老。 基于以上需求,找了不少例子进行比较,并对代码进行测试改进,终于完成了以上
DataGridView添加行数据并赋值
<br />                   //添加行数据                    <br />                    DataGridViewRow Row = new DataGridViewRow();<br />                    dataGridView1.RowHeadersWidth = 45;<br />                    int index = dataGridView1.Rows.Add(Row);<br /> 
DataGridView动态添加数据
近来做串口通信测试程序,刚开始用的listview显示收发数据,然后我想复制发现listview不可编辑,于是改为datagridview控件。   DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGri