到底应该如何在VB的ListView中动态加载数据库中的大量记录?

原创 2006年06月10日 14:09:00

在使用VB6.0访问数据库时,经常会遇到记录数量过多,对数据列表进行初始化时耗费大量时间,如何在初始化时,只是先加载少量的数据,使控件快速完成初始化.然后当按垂直滚动条的时间再加载更多的其它内容,但是又不是要它分页显示,也就是说当拖垂直滚动条是时候之前的内容还在。应该如何实现,这个问题困扰了我好入。

我参考了网上的很多文章,包括各处转载的一篇叫《在VB的ListView中动态加载记录》,发现里面介绍的方法,好像根本不行呢?

关于网上讲的捕捉MW_MOUSEWHEEL的方法,我的实践发现是:如果是当前焦点不在Listview控件上,而只是鼠标位于Listview区域内,那么是可行的;可是一旦Listview获得了焦点,那么好像就不行了?

我个人理解,要想使用Listview控件动态显示数据库中的很多数据,应该是以下的思路:

1,先显示第一批数据,

2,然后随着Listview被滚动或者滚动条被拖动,程序重新判断Listview当前的位置,

3,然后此时再从数据库里调出以当前位置的数据为中点的前后各N条数据,显示在Listview内,并且重要的是取出来的数据要比Listview所能够显示的多一些,这样保证用户滚动Listview的时候不会看到空白。

其中,第1步肯定是没有问题;

可是,第2 步中,到底应该如何通过Listview的滚动而判断出当前应该显示的数据位置呢?那个捕捉MW_MOUSEWHEEL的方法,对于Datagrid来说非常好用,可是到了Listview控件,就不那么好用了,具体症状如上述过。我知道原因在于,Listview本身是支持滚动的。可是,我现在需要Listview在完成默认滚动工作的同时还要做另外一项工作,就是判断当前滚动条的位置,这应该怎么做呢?

而第3条中,应该如何做到,比如,取出300条数据,然后在Listview中显示出第100至第200条数据呢?这样的效果,是为了让用户上下拖动时不至于看到空白,类似于制做游戏地图的思路,可是,具体到VB使用Listview作为显示载体的数据库编程中,应该怎么实现呢?

唉,这个难缠了我好久的问题,到底具体应该怎么做呢?我参考了网上好多地方转载来转载去的文章,可是行不通啊。到底有没有人成功地做过?Listview控件,又有没有一个类似Toplist_change的事件,即显示区的第一条记录发生改变时的事件呢?还有,如何判断一个Listview当前显示区域内显示了多少条记录呢?类似DataGrid的VisibleRows属性?

PS:希望大家不要告诉我,选择其它的控件吧。选择Listview是我多方比较后的认真选择。Datagrid确实用法容易、显示速度快、不用考虑大量数据同时显示的问题,可是,Datagrid在功能上有些弱。Listbox也不如Listview功能丰富。我需要Listview来显示数据库,是因为正在制做一个类似电子词典的软件,而Listview可以显示小图片,这就可以实现其中的单词分类(生词、重要词汇等);Listview还可以设定某列的text右对齐,这对于制做一个倒查词典(以单词中字母倒序为序的词典)非常重要,因为这样可以让单词列中的所有词“靠右站”,这样才像一本倒查词典。

这个问题困挠了我好久好久,我急待高手的解答,并愿意以手中的资源与人互享。我手中有一些不错的控件和工具,相信一很多人不太好找的或者是需要花很多精力找到的,我愿意把它送给帮助我的好心人作为回报!透露一些如下:Setup Factory 7.0安装文件制作工具;VB Squared skin control和Directskin ActiveX ocntrol 4.5破解版,是VB界面美化的力器!是WindowsBlind的,而且是国内非常非常难找到的破解版,绝对好使,我个人正在用。

vb.net 向ListView 添加数据

  Me.ListView2.Columns.Clear() Me.ListView2.Items.Clear() ...
  • ssihc0
  • ssihc0
  • 2009年08月16日 14:00
  • 6042

VB ListView控件各种操作详解

Private Sub Form_Load() 'ListView1.SmallIcons = ImageList1.Object '把ImageList1图标列表控件绑定到 ListVie...
  • cncco
  • cncco
  • 2013年11月30日 12:45
  • 25638

VB将数据显示在ListView中

   最近在学VB,所以把一些东西都记下来,方便以后学习。下面是将数据查处来显示在ListView中   Dim ledrst As ADODB.Recordset  Set ledrst = New...

VB 获取外部LISTVIEW内容

VERSION 5.00Begin VB.Form frmMain    Caption         =   "Form1"   ClientHeight    =   3090   Client...

VB中设置MSHFlexGrid每行的颜色

  设置MSHFlexGrid每行的颜色Public Sub SetRowColor()Sub SetRowColor(ByRef MSHFlexGrid As Object)Dim j, i, ob...

ListView动态加载刷新

  • 2013年10月24日 13:40
  • 607KB
  • 下载

ListView动态加载数据分页

  • 2012年07月01日 14:22
  • 89KB
  • 下载

vb.net动态加载dll并执行dll中的某一个函数

注意:下面的Dll文件必须是用托管代码写的,否则请使用API的相应函数进行动态加载。 一、 比如我事先写了一个类,如下: Public Class TestClass     Public Funct...

jquery mobile listview动态加载json

  • 2014年06月04日 17:08
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:到底应该如何在VB的ListView中动态加载数据库中的大量记录?
举报原因:
原因补充:

(最多只允许输入30个字)