找回密码
 加入
搜索
查看: 8973|回复: 11

[效率算法] [已解决]求读取数据库然后写入ListView中的优化办法

 火.. [复制链接]
发表于 2010-4-29 09:33:45 | 显示全部楼层 |阅读模式
本帖最后由 jhun 于 2010-4-29 10:32 编辑

我现在是写个循环,读一条写一条,可是数据量大的时候在ListView中显示的时间真的好长,然后想用_GUICtrlListView_AddArray 这个函数,可是问题来了,这个数组如何来创建呢,而且ListView有七列并与数组库的列对应,这里需要创建动态多维数组,并为其添加内容,由于学识浅薄,真的不知道如何下手了,希望您能帮助我,谢谢

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-4-29 09:40:17 | 显示全部楼层
GUICtrlCreateListViewItem('数据1' & '|' & '数据2', $ListView1)
发表于 2010-4-29 09:44:12 | 显示全部楼层
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <array.au3>
Opt('MustDeclareVars', 1)

$Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

_Main()

Func _Main()
        Local $iI, $iTimer, $hListView

        ; Create GUI
        GUICreate("ListView Add Array", 400, 300)
        $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
        _GUICtrlListView_SetUnicodeFormat($hListView, False)
        GUISetState()

        ; Add columns
        _GUICtrlListView_AddColumn($hListView, "Items", 100)
        _GUICtrlListView_AddColumn($hListView, "SubItems 1", 100)
        _GUICtrlListView_AddColumn($hListView, "SubItems 2", 100)
        _GUICtrlListView_AddColumn($hListView, "SubItems 3", 100)
        _GUICtrlListView_AddColumn($hListView, "SubItems 4", 100)
        _GUICtrlListView_AddColumn($hListView, "SubItems 5", 100)
        _GUICtrlListView_AddColumn($hListView, "SubItems 6", 100)

        _GUICtrlListView_SetItemCount($hListView, 5000)
        
        ; One column load
        Local $aItems[5000][1]
        For $iI = 0 To UBound($aItems) - 1
                $aItems[$iI][0] = "Item " & $iI
        Next
        $iTimer = TimerInit()
        _GUICtrlListView_AddArray($hListView, $aItems)
        MsgBox(4160, "Information", "Load time: " & TimerDiff($iTimer) / 1000 & " seconds")

        _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView)) ; items added with UDF function can be deleted using UDF function

        ; Four column load
        Dim $aItems[5000][7]
        For $iI = 0 To UBound($aItems) - 1
                $aItems[$iI][0] = "Item " & $iI
                $aItems[$iI][1] = "Item " & $iI & "-1"
                $aItems[$iI][2] = "Item " & $iI & "-2"
                $aItems[$iI][3] = "Item " & $iI & "-3"
                $aItems[$iI][4] = "Item " & $iI & "-4"
                $aItems[$iI][5] = "Item " & $iI & "-5"
                $aItems[$iI][6] = "Item " & $iI & "-6"
        Next
        $iTimer = TimerInit()
        _GUICtrlListView_AddArray($hListView, $aItems)
        MsgBox(4160, "Information", "Load time: " & TimerDiff($iTimer) / 1000 & " seconds")

        ; Loop until user exits
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
        GUIDelete()
EndFunc   ;==>_Main

评分

参与人数 1金钱 +30 收起 理由
jhun + 30 非常感谢

查看全部评分

 楼主| 发表于 2010-4-29 10:02:54 | 显示全部楼层
回复 2# 水木子


    可能我表达的不太明白,我需要的是一次写入到ListView,而不是一条一条的写入,这样效率很慢,感谢您的回复
 楼主| 发表于 2010-4-29 10:06:29 | 显示全部楼层
回复 3# 3mile


    真的非常感谢,因为从来没有操作过多维数组,所以实在无法下手,您的例子让我非常受用。不过还有一个问题,不知能否烦请您解决一下,就是定义数组的问题,我现在是先读一次数据库得到数据条数,然后创建数组,然后读数据库并写入数组,不知道有没有更简便的方法,不管如何,再次感谢您
发表于 2010-4-29 11:02:24 | 显示全部楼层
本帖最后由 3mile 于 2010-4-29 11:07 编辑

建立一个TEST.INI文件,内容如下:
[test]
1=a,b,c,d,e,f,g
2=1,2,3,4,5,6,7
3=aa,bb,cc,dd,ee,ff,gg
4=aaa,bbb,ccc,ddd,eee,fff,ggg
5=aaaa,bbbb,cccc,dddd,eeee,ffff,gggg
定义数组代码如下:
#include <array.au3>
$ini=IniReadSection("test.ini","test")
$num=$ini[0][0]
Local $arr[$num][7]
For $i=1 To $ini[0][0]
        $sp=StringSplit($ini[$i][1],",")
        For $n=1 To $sp[0]
                $arr[$i-1][$n-1]=$sp[$n]
        Next
Next
_ArrayDisplay($arr)

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2011-3-12 13:26:57 | 显示全部楼层
不错,学习了
发表于 2011-7-11 18:24:04 | 显示全部楼层
学习了,3mile
发表于 2011-7-11 18:42:32 | 显示全部楼层
好方法!!
学习了!
发表于 2014-5-9 15:09:44 | 显示全部楼层
不错,学习了
发表于 2014-5-30 20:55:20 | 显示全部楼层
学习!!!支持1
发表于 2014-9-12 11:35:37 | 显示全部楼层
学习了,虽然还不懂,感谢,感谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-13 04:59 , Processed in 0.075686 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表