速度慢到什么程度?
是不是SQL有问题,我显示2000条的话速度也不是很慢,况且我还有显示上万条的!

解决方案 »

  1.   

    在向ListView添加数据前,首先使Visible属性为False,在添加完毕后再设为True,这样做的目的是使ListView在添加数据时不用进行数据的显示刷新问题
      

  2.   

    你可以比较一下下面2个例子,经过我多次测试,后者的速度比为:1:2以上,也就是说,前者1秒里面可以显示2000个,后者1秒里面可以显示4000个以上。Option ExplicitPrivate Declare Function GetTickCount Lib "kernel32" () As Long
    Private m_lngTimeElapsed As LongPrivate Sub cmdStandard_Click()
            
        Dim o_lngItems As Long
        
        m_lngTimeElapsed = GetTickCount
        
        lvTest.ColumnHeaders.Clear
        lvTest.ColumnHeaders.Add , , "Index"
        lvTest.ColumnHeaders.Add , , "Name"
        lvTest.ColumnHeaders.Add , , "Sex"
        lvTest.ColumnHeaders.Add , , "Money"
        
        lvTest.ListItems.Clear
        
        For o_lngItems = 1 To 2000
            lvTest.ListItems.Add , , CStr(o_lngItems)
            lvTest.ListItems(o_lngItems).SubItems(1) = "item" & CStr(o_lngItems)
            lvTest.ListItems(o_lngItems).SubItems(2) = IIf(o_lngItems Mod 2, "Male", "Female")
            lvTest.ListItems(o_lngItems).SubItems(3) = Rnd(1) * o_lngItems
        Next
        
        MsgBox "耗时:" & (GetTickCount - m_lngTimeElapsed) & " 毫秒"
            
    End Sub
    Private Sub cmdAcceleration_Click()    Dim o_lngItems As Long
        Dim o_liItem As ListItem
        
        m_lngTimeElapsed = GetTickCount
        
        With lvTest
            .Visible = False
            
            With .ColumnHeaders
                .Clear
                .Add , , "Index"
                .Add , , "Name"
                .Add , , "Sex"
                .Add , , "Money"
            End With
            
            With .ListItems
                .Clear
        
                For o_lngItems = 1 To 2000
                    
                    Set o_liItem = .Add(, , CStr(o_lngItems))
                    
                    With o_liItem
                        .SubItems(1) = "item" & CStr(o_lngItems)
                        .SubItems(2) = IIf(o_lngItems Mod 2, "Male", "Female")
                        .SubItems(3) = Rnd(1) * o_lngItems
                    End With
                Next
            End With
            
            .Visible = True
        End With
        
        MsgBox "耗时:" & (GetTickCount - m_lngTimeElapsed) & " 毫秒"End Sub
      

  3.   

    如果要分页,也不难做,只需要根据记录集,分段显示就是了,稍微思考一下就可以了。以上例子可以在一下地址下载:
    http://caotang.myetang.com/temp/listviewspeedtest.zip
      

  4.   

    希望对你有的帮助,按照实际情况,善用With,对加快速度很有帮助,具体原因,请查看相关文档。
      

  5.   

    你说的那个地方我去不了,anyway,thank you very much! i am a green one here , wish you help me later! thank you again!
      

  6.   

    [email protected]
    看来今天我走运了,不出门都遇贵人,呵呵
    有qq吗?
    我的是37963795
    以后多交流,不过我刚毕业,经验不多,多指点我啊。