日期:2014-05-17  浏览次数:21112 次

WinForm里面的DataGridView如何可以快速的加载大量数据
WinForm里面的DataGridView如何可以快速的加载大量数据?我现在加载的时候查询了4000条数据居然要等很久,数据库里面查询很快,不到1秒钟的时间,但是在程序里面就很慢了,给DataGridView设置数据源的时候慢了,以下代码很慢:
 DataTable dt = new ReportManager().GetHoursReportsForPMC("2", "");
if (dt.Rows.Count > 0)
{
        dgv.DataSource = dt;
}
其实从数据库得到数据很快,就是绑定到控件的时候出问题了,大约要3分钟才可以加载完成。有什么好点的方法可以快点显示数据呢?我的数据来源都是通过存储过程来的,里面的逻辑都比较复杂,所以网上说的存储过程分页貌似也用不到,网络上的存储过程分页都需要传入一张表,我没有表,都是存储过程。

------解决方案--------------------
你可以分页,分页加载,每次加载少量的,难道你想把4000条数据就拖动滚动条浏览吗

分页存储过程
------解决方案--------------------
引用:
引用:
你可以分页,分页加载,每次加载少量的,难道你想把4000条数据就拖动滚动条浏览吗

分页存储过程


分页存储过程我也试过,但是如何传入一个存储过程呢?我看了很多的分页存储过程,都是需要传入一张表的。


传入存储过程和你的UI没有什么关系,你只需要返回你要的数据就行了
传入一张表?没必要吧,返回一张表才差不多
------解决方案--------------------
总表在内存里放着,每次只显示100条记录了,下一页上一页都是从内存里取下100条和上100条数据
------解决方案--------------------
我们的物料档案都是一几千上万条一起显示出来的,都没这问题
------解决方案--------------------
要不分页,要不异步。建议你还是分页的好。
------解决方案--------------------
4000条该不是问题,不至于像楼主说的那么慢。建议看看你的DataTable获取数据方式,从这方面入手看看原因。
------解决方案--------------------
自己重写加载的方法,使用虚拟模式加载,速度可以提高10倍左右。
------解决方案--------------------
4000条3分钟的话,一定是数据库方面的问题了,建议检查一下,你查询数据库的那个方法。