急!!!要将记录集的数据写入listview!
请高手看看我的代码!有没有办法提高速度啊?
这样的方法,显示的太慢,闪屏!
请问有没有其他的方法啊??将RecordSet数据填入ListView中
Public Sub FillLview(lvwTarget As ListView, IconSet As ImageList, rdset As ADODB.Recordset, _
                      FieldNames() As String, Number As Integer)
  Dim itmX As ListItem
  Dim i, j As Integer
  
  lvwTarget.ListItems.clear
  
  If rdset.State = adStateOpen Then
      If Not rdset.EOF Then
      'lvwTarget.SmallIcons = IconSet
        rdset.MoveFirst
        Do Until rdset.EOF
          Set itmX = lvwTarget.ListItems.Add()
          j = j + 1
          If j < 10 Then
            itmX.Text = "0" + Trim(Str(j))
          Else
            itmX.Text = j
          End If
          
          For i = 1 To Number - 1
            If Not IsNull(rdset.Fields(FieldNames(i)).Value) Then
              
              Select Case True
                  Case Trim(rdset.Fields(FieldNames(i)).Value) = "1"
                      itmX.SubItems(i) = "√"
                      
                      'itmX.SmallIcon = 1
                  Case Trim(rdset.Fields(FieldNames(i)).Value) = "0"
                      itmX.SubItems(i) = "×"
                      'itmX.SmallIcon = 2
                  Case Else
                      itmX.SubItems(i) = rdset.Fields(FieldNames(i)).Value
              End Select
              
              
            End If
          Next i
          rdset.MoveNext
        Loop
        lvwTarget.SortKey = 0
        lvwTarget.SortOrder = lvwAscending
    End If
  End If
End Sub

解决方案 »

  1.   

    lvwTarget.visible=false
    ...
    for i=1 to rdset.recordset   'Do Until rdset.EOF
    ...
    next i   'Loop
    ...
    lvwTarget.visible=true
      

  2.   

    不行啦,,,,
    那样的话,,
    连ColumnHeaders都看不到了,,
    整个一片空白很长时间,才出现数据
    唉~~~帮帮我吧!   With LView_Table
            .View = lvwReport   '报表显示
            .GridLines = True   '网格显示
            .FullRowSelect = True   '整行选中
            .Sorted = True
            .SortOrder = lvwDescending
            .LabelEdit = lvwManual
        End With
    怎么让提高速度,又不让闪屏呢
      

  3.   

    ListView本身有很严重的效率问题,如果你是显示单列就改用List,如果是多列就改用DataGrid吧。或者找一个比较好的第三方的Grid控件。
      

  4.   

    ListView添加记录必须用Add方法很慢的而且好象过了百万就装不下了,还是用别的控件吧,
    找一些可以避开Add方法的控件DataGrid.MSHFlexGrid,增加行(.rows=X)再赋值比Add方法快多了,可是ListView连这也不支持,没办法。