[已解决]如何实现在ListView中按条件查找后,让ListView只显示符合条件的行
本帖最后由 JiangShi 于 2011-3-4 21:13 编辑我做了个ListView,然后从数据库里面读取了数据.我设了个查找输入框及查找按钮
想实现在ListView中按条件查找后,最后让ListView只显示符合条件的行 查找用_GUICtrlListView_FindInText 可以.但我不知道怎么能让ListView只显示符合条件的行 在官方论坛找了10多页..也没发现要找到的...哪位高手帮忙看看 把其它行删除不就行了
也可以这样,把ListView内的内容照搬进数组,需要查找时,在数组里面查找,找到后,把ListView表里面的内容清空,添加 找到行的内容。想恢复ListView表原状,则把数组的内容照搬回ListView就行了 把其它行删除不就行了
也可以这样,把ListView内的内容照搬进数组,需要查找时,在数组里面查找,找到后, ...
yhxhappy 发表于 2011-3-4 19:47 http://autoitx.com/images/common/back.gif
我试试,谢谢 下面是我从自己的程序里抠下来的,GUI你自己添加一下吧Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $nNotifyCode = _HiWord($wParam)
Local $nID = _LoWord($wParam)
Switch $nID
Case $filter ; input控件句柄
Switch $nNotifyCode
Case $EN_CHANGE
_FilterItem(GUICtrlRead($filter))
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_COMMAND
Func _HiWord($x)
Return BitShift($x, 16)
EndFunc ;==>_HiWord
Func _LoWord($x)
Return BitAND($x, 0xFFFF)
EndFunc ;==>_LoWord
Func _FilterItem($keyword)
If $aLVItems = 0 Then Return
If $keyword Then ;用户输入过滤关键词
Local $aNewFilter =
For $i = 1 To $aLVItems
If StringInStr($aLVItems[$i], $keyword) Then ; 暂存符合条件得项目
$aNewFilter += 1
ReDim $aNewFilter[$aNewFilter + 1]
$aNewFilter[$aNewFilter] = $aLVItems[$i]
EndIf
Next
_GUICtrlListView_DeleteAllItems($hListView) ;ListView控件句柄
If $aNewFilter = 0 Then Return
For $i = 1 To $aNewFilter
GUICtrlCreateListViewItem($aNewFilter[$i], $hListView)
Next
$aNewFilter = ''
Else
_GUICtrlListView_DeleteAllItems($hListView)
For $i = 1 To $aLVItems
GUICtrlCreateListViewItem($aLVItems[$i], $hListView)
Next
EndIf
EndFunc ;==>_FilterItem 回复 1# JiangShi
你这个问题问的顺序有些问题,是按条件查找数据库,然后填入listview,不是先创建listview,再查找listview 回复 7# netegg
额,难道我理解错了? 本帖最后由 JiangShi 于 2011-3-4 20:26 编辑
回复JiangShi
你这个问题问的顺序有些问题,是按条件查找数据库,然后填入listview,不是先创建listv ...
netegg 发表于 2011-3-4 20:06 http://autoitx.com/images/common/back.gif
因为我的数据库有多个表,形成多个查询结果填入ListView,同时我又需要对填入Listview的内容在次搜索,我又想一个搜索按钮解决问题.所以只能对Listview的内容进行处理. 回复 9# JiangShi
多表查询更不可能先处理listview了,只能先处理数据库,那个是按钮代码的事 回复JiangShi
多表查询更不可能先处理listview了,只能先处理数据库,那个是按钮代码的事
netegg 发表于 2011-3-4 20:36 http://autoitx.com/images/common/back.gif
HEHE,我弄了3个sqlite数据表.查询结果分10个左右显示在ListView内..感觉做在搜索按钮上比较麻烦,就想对显示在Listview的内容二次搜索显示.... 回复JiangShi
多表查询更不可能先处理listview了,只能先处理数据库,那个是按钮代码的事
netegg 发表于 2011-3-4 20:36 http://autoitx.com/images/common/back.gif
算了.我还是按照你的思路啦处理按钮....继续研读去.做好我的第一个程序.哈 我还是通过按钮来处理数据库来解决了.就是代码比较多...等做完在想办法精简把.. 做两个listview,一个显示一个隐藏,查找时把符合条件的插入到隐藏的那个,然后显示它,而另一个隐藏。这样避免数据量很大时删除插入操作。 头大~~~~~``http://www.pgpop.com/image/face1.gif
http://bbs.hangzhou.com.cn/images/default/sigline.gif
去斑方法
页:
[1]
2