listview 从数据库提取数据 为啥显示不全?[已解决]
本帖最后由 xin266 于 2019-11-17 06:13 编辑_SQLite_GetTable2d(-1, "SELECT * FROM jd;", $aResult, $aRow, $iColumns)
;MsgBox(1,$aRow,$iColumns)
MsgBox(1, $aResult, $aRow)
Local $i=1
While $i <= $aRow
_GUICtrlListView_AddItem($ListView1, $aResult[$i])
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 1, 1)
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 2, 2)
$i = $i +1
WEnd
http://www.autoitx.com/forum.php?mod=viewthread&tid=55479&highlight=listview%2B%B3%A4%B6%C8 啥都不显示了!
請提供資料庫 及 程式
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#NoTrayIcon
#include <Inet.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <Array.au3>
#include<date.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 775, 516, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
;$ListView1 = GUICtrlCreateListView("", 0, 8, 761, 497,$LVS_SHOWSELALWAYS,$LVS_EX_GRIDLINES)
$ListView1 = GUICtrlCreateListView("", 0, 8, 761, 497, $LVS_SHOWSELALWAYS + $LVS_OWNERDATA, $LVS_EX_GRIDLINES + $LVS_EX_FULLROWSELECT + $LVS_EX_DOUBLEBUFFER)
_GUICtrlListView_BeginUpdate($ListView1)
_GUICtrlListView_AddColumn($ListView1, '日期时间', 100)
_GUICtrlListView_AddColumn($ListView1, '产品名称', 300)
_GUICtrlListView_AddColumn($ListView1, '价格', 80)
GUICtrlSetFont(-1, 12, 4000, 0, "MS Sans Serif")
GUICtrlSetOnEvent(-1, "ListView1Click")
GUISetState(@SW_SHOW)
$SQLite_Data_Path = "jd.db"
Local $aRow
Local $aResult, $iRows, $iColumns, $hQuery, $ONd, $vv, $i
_SQLite_Startup() ;加载 SQLite.dll
If @error Then
MsgBox(16, "SQLite Error", "SQLite3.dll Can't be Loaded!")
Exit -1
EndIf
_SQLite_Open($SQLite_Data_Path)
;_SQLite_Query(-1, "SELECT * FROM jd;", $hQuery)
;_SQLite_FetchData($hQuery, $aRow)
;_SQLite_FetchData($hQuery, $aRow)
_SQLite_GetTable2d(-1, "SELECT * FROM jd;", $aResult, $aRow, $iColumns)
;MsgBox(1,$aRow,$iColumns)
MsgBox(1, $aResult, $aRow)
Local $i = 1
While $i <= $aRow
_GUICtrlListView_AddItem($ListView1, $aResult[$i])
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 1, 1)
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 2, 2)
$i = $i + 1
WEnd
_GUICtrlListView_EndUpdate($ListView1)
#CS For $i =1 To $aRow
;MsgBox(1, $aRow, $aRow[$i])
_GUICtrlListView_AddItem($ListView1,$aResult[$i])
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 1, 1)
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 2,2)
Next
#CE
_SQLite_Close()
_SQLite_Shutdown()
While 1
Sleep(100)
WEnd
Func Form1Close()
Exit
EndFunc ;==>Form1Close
Func Form1Maximize()
EndFunc ;==>Form1Maximize
Func Form1Minimize()
EndFunc ;==>Form1Minimize
Func Form1Restore()
EndFunc ;==>Form1Restore
Func ListView1Click()
EndFunc ;==>ListView1Click
估计是 $ListView1 的样式/ 扩展样式出的 bug,
第20行 采用默认样式 试试,可以显示到数据 : $ListView1 = GUICtrlCreateListView("", 0, 8, 761, 497);, $LVS_SHOWSELALWAYS + $LVS_OWNERDATA, $LVS_EX_GRIDLINES + $LVS_EX_FULLROWSELECT + $LVS_EX_DOUBLEBUFFER) 将样式注释掉,可以完美显示 你要的数据
具体是那个样式/扩展样式,……水平有限 ……等高人来解释吧……………… 我的笨办法就是,将样式/扩展样式一个一个进行测试,看看到底是哪个样式出的问题。。。。。 楼主是做手机行业的么,我也是呢!这是采集京东入库? heavenm 发表于 2019-11-16 15:18
楼主是做手机行业的么,我也是呢!这是采集京东入库?
不是 我是想弄个监控京东价格的! 自己买的时候 知道最低价是多少 免得买高了 floor6ggg 发表于 2019-11-16 14:13
估计是 $ListView1 的样式/ 扩展样式出的 bug,
第20行 采用默认样式 试试,可以显示到数据 : $ListView1...
1.2.3,4都应该有数据才是!
注释之后 1.2.3,4 出来了 但是 后面的 产品名称价格 没出来! floor6ggg 发表于 2019-11-16 14:13
估计是 $ListView1 的样式/ 扩展样式出的 bug,
第20行 采用默认样式 试试,可以显示到数据 : $ListView1...
将46行的写入方式更改一下
While $i <= $aRow
_GUICtrlListView_AddItem($ListView1, $aResult[$i])
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 1, 1)
_GUICtrlListView_AddSubItem($ListView1, 0, $aResult[$i], 2, 2)
$i = $i + 1
WEnd
替换成数组的直接写入
_GUICtrlListView_AddArray($ListView1, $aResult) 本帖最后由 floor6ggg 于 2019-11-16 23:26 编辑
应该是两个问题:
1.样式,注释后测试看具体哪里出错
2.GUICtrlListView_AddSubItem 使用上有个参数需要改动一下
页:
[1]
2