Foxtable(狐表)用户栏目专家坐堂 → 求一个目录树模糊查找的代码改进方法


  共有3055人关注过本帖树形打印复制链接

主题:求一个目录树模糊查找的代码改进方法

帅哥哟,离线,有人找我吗?
lovemaders
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:723 积分:5058 威望:0 精华:0 注册:2014/12/30 16:52:00
求一个目录树模糊查找的代码改进方法  发帖心情 Post By:2016/8/18 14:20:00 [只看该作者]

我的目录树生成的代码是这样的

 

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.GenerateTree("companyinformation","公司编号","公司名称",".")    

For Each nd As WinForm.TreeNode In trv.AllNodes '遍历所有节点
                        
        nd.Text = nd.DataRow("公司编号") & " " & nd.text    
Next

 

 

 

[此贴子已经被作者于2016/8/18 14:34:25编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lovemaders
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:723 积分:5058 威望:0 精华:0 注册:2014/12/30 16:52:00
  发帖心情 Post By:2016/8/18 14:24:00 [只看该作者]

我现在做了个文本框和搜索按钮效果如图所示,只有当文本框内容与节点内容完全一样的时候才能搜到,你也看到了我的节点名字是编号+空格+名称的形式。

我现在的搜索按钮代码是如下

 

 

Dim trv2 As winform.treeview = e.Form.controls("treeview2")
Dim nm As String = e.Form.controls("textbox12").value
For Each nd As WinForm.TreeNode In trv2.AllNodes
     If nd.text = nm Then
        trv2.SelectedNode = nd
        nd.EnsureVisible()
     End If
Next


图片点击可在新窗口打开查看此主题相关图片如下:97.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
lovemaders
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:723 积分:5058 威望:0 精华:0 注册:2014/12/30 16:52:00
这种  发帖心情 Post By:2016/8/18 14:26:00 [只看该作者]

这种方式下必须文本框与节点内容完全一样才能搜到,如图中的只有编号没有名称的那些节点都搜不到,我想将搜索按钮的代码改进一下

 

改成模糊查找模式,就是说不管输入的是 编号或者名称中的任何一个字,空格除外,都可以搜到相关的节点,类似列属性的输入助手类似的东西。

 

求大神改进一下代码,谢谢啦。

[此贴子已经被作者于2016/8/18 14:27:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/18 15:08:00 [只看该作者]

 

Dim trv2 As winform.treeview = e.Form.controls("treeview2")
Dim nm As String = e.Form.controls("textbox12").value
For Each nd As WinForm.TreeNode In trv2.AllNodes
     If nd.text.Contains(nm) Then
        trv2.SelectedNode = nd
        nd.EnsureVisible()

        Exit For
     End If
Next

 


 回到顶部
帅哥哟,离线,有人找我吗?
lovemaders
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:723 积分:5058 威望:0 精华:0 注册:2014/12/30 16:52:00
然后不是这样的  发帖心情 Post By:2016/8/18 15:49:00 [只看该作者]

如图,带公司2个字的显示出来,不带公司2个字的可以不显示出来,代码怎么改,你写的那个代码最后只定位到最后一行上了,其他的一栏而过并没有留下记号。
图片点击可在新窗口打开查看此主题相关图片如下:987.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:988.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/8/18 15:51:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/18 17:28:00 [只看该作者]

 重新生成目录树

 

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.GenerateTree("companyinformation","公司编号","公司名称",".", "某列 like '%123%'")    


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2016/8/18 22:27:00 [只看该作者]

就一个目录树,依次点开也不费事!

 回到顶部
帅哥哟,离线,有人找我吗?
lovemaders
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:723 积分:5058 威望:0 精华:0 注册:2014/12/30 16:52:00
0.0目前用节点图标暂时  发帖心情 Post By:2016/8/21 11:02:00 [只看该作者]

0.0目前用节点图标暂时,不过比较麻烦要有的地方重新加载树什么的,不完美,条数多的时候还是有必须区搜索的。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/8/21 14:02:00 [只看该作者]

 上一条下一条,也很好实现吧?

 

 http://www.foxtable.com/webhelp/scr/2961.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
lovemaders
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:723 积分:5058 威望:0 精华:0 注册:2014/12/30 16:52:00
不想要上一条下一条赛  发帖心情 Post By:2016/8/21 15:26:00 [只看该作者]

比如搜索1,所有含1字符的节点图标都改变。这个如果不用复选框,只用图标的话貌似只能指定图标的图案了,有点不完美,不知道有没有其他方案,前提不实用复选框

 回到顶部
总数 15 1 2 下一页