日期:2014-05-20  浏览次数:20979 次

寻找C#中快速填充ListView的方案,万条记录
寻找C#中快速填充ListView的方案,万条记录

常规的ListView控件填写上千条记录就慢得不行了,想找一个方法或者第三方控件,能快速填入万条记录。

------解决方案--------------------
BeginUpdate
EndUpdate
加了吗?
实在不行可以填充几十条后update一下 让客户先看着
然后再填其余的
------解决方案--------------------
你可以 换种思路

用 自己的滚动条 + listview
我 显示 和 计算 800多万 记录 也不倒1秒

就是 这种方法
处理好 自己 的滚动条 就ok

我如果其他的 方法 800多万 记录 的速度 根本 不行
所以 自己用滚动条+ listview 组装了

其实 就是 数据 异步 平滑 分页
------解决方案--------------------
To withcsharp
能举个例子么?使用DATAGRID的话,也能这样做么?
------解决方案--------------------
搞不明白
为什么 你一次 填那么多进去

能看完吗?

数据 分页的获取

显示100滚条动到底部 再读取后面的
------解决方案--------------------
http://www.cnblogs.com/xiaowy/archive/2006/08/12/475184.aspx
------解决方案--------------------
你计算ListView一页能显示多少条记录,得到总共的页数,设置成滚动条的滚动范围。
然后根据滚动条的位置,取出数据填充到ListView中。
------解决方案--------------------
怎么又进来了,呵呵.给你一段代码吧,不过只能用于.net2.0
例子,构造函数中写
personnes = new List <Personne> ();
for (int i = 0; i < 1000; i++)
{
personnes.Add(new Personne( "Nom " + i.ToString(), "Prenom " + i.ToString()));
}
listView1.VirtualMode = true;
listView1.VirtualListSize = personnes.Count; // nombre d 'items du listview (donc ici 10.000)
listView1.RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(listView1_RetrieveVirtualItem);
}
这是RetrieveVirtualItem事件
public void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
ListViewItem item;
item = new ListViewItem(personnes[e.ItemIndex].Nom);
item.SubItems.Add(personnes[e.ItemIndex].Prenom);

// on le retourne dans e.Item
e.Item = item;

}
------解决方案--------------------
up
------解决方案--------------------
学习,遇到同样问题,》NET Winform framework1.1
------解决方案--------------------
up