C# 界面初始化时listview需要加载大量数据,求教提高速度的方法!!!

来源:百度知道 编辑:UC知道 时间:2024/06/05 13:06:16
如题。或者不用listview能达到一样效果的也可以。我希望能和金山词霸左边的list一样,有大概5万个数据,启动时能够比较快的加载。

请给出实例代码,测试后给分。
我要做的不是b/s结构。就和金山词霸一样的桌面应用,启动的时候要加载7万个item到listview。
IsPostback是什么功能?麻烦 xihandesigner说明一下。我测试成功马上给分。

7万条数据合理不合理的问题,不在讨论范围。金山词霸的list有10万条数据,加载也很快阿,谁能解释一下其中缘由?

PS:金山词霸的listview是不是静态初始化的?

首先,一个列表里面有7万格项目是不合理的,因为你将没有办法通过拖动滚动条来准确定位,毕竟7万条记录的list滚动条得多小啊
其次,如果非要显示的话,建议使用异步填充,先组织好一批数据,然后填充这一批,期间UI线程还是可以相应的,这样虽然速度没有提升,但是用户体验会好一些
再次,如果要求必须一次填充完成的话,在开始填充时使用SuspendLayout(),挂起更新画面项目,然后在填充完以后ResumeLayout(true)恢复更新画面,并将前面挂起的画面更新恢复。这样可以一定程度上节省更新的时间。
this.listviewSample.SuspendLayout();
this.LoadListData();
this.listviewSample.ResumeLayout(true);

Ps: IsPostback是BS系统上面的,在你的Winform上没有意义。金山词霸采用的是我说的第二种方案配合第三种方案,只加载一小部分,在你拖动滚动条的时候填充当前滚动条指定的那一段。相当于分页。

不用,只要你关掉IsPostback就好多了,加入代码:IsPostback="false"

这个好做,你在查询的时候在表里做标记,先1000(数字你定)条1000的查出来显示。如果是b/s架构的,设计思维也一样,用ajax实现不断的加载,并且不影响使用,速度上并不快,只是分批加载了,给人的感觉是快了。

可以采用分页加载

分少

用什么加载什么不行吗