VB怎样实现listbox和treeview结合。

技术小noob 2017-10-20 11:19:39
想实现一个权限分配的功能。
左边是用户,右边是菜单权限,怎么连接SQL库表,当选中用户的时候,显示当前权限,确认treeview节点,回写到用户。

请大佬们赐教,小白一枚。
...全文
834 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
技术小noob 2017-10-24
  • 打赏
  • 举报
回复
填充Treeview的问题终于搞赢了,不容易。 接下来,解决 “点选用户确认Treeview的复选框” 的问题。 有大神指导嘛?
舉杯邀明月 2017-10-23
  • 打赏
  • 举报
回复
我还以为你想“给控件设置查询条件、然后控件自动刷新显示内容、自动钩选/不钩选相关项目”呢。 (自己不说明白,怪我咯……) 能不能“循环”,那要看你的“查询结果”的信息是什么样的啊…… 如果只有几项、十来项,你不清楚如何用循环,就用一堆IF……End If 来处理也可以。 但如果项目多了,肯定得考虑循环结构的流程来处理。  能不能实现,就要看你的数据库信息如何组织、查询结果能不能“反映层次、从属关系”了。
技术小noob 2017-10-23
  • 打赏
  • 举报
回复
谢谢“脆皮大雪糕”的提点,思路现在很清楚了,代码实现还有点问题。 我去找找实例学习下,网上好多treeview的代码都是添加删除节点什么的控制实例。有我这种类似功能的实例推荐嘛?
技术小noob 2017-10-23
  • 打赏
  • 举报
回复
引用 11 楼 Chen8013 的回复:
权限的数据库信息、组织结构又没有“国际标准”,怎么可能由控件给你实现自动填充!!! 这个只能自己用代码处理、显示啊,怎么总是想着“自动”??? 
大神误会我“自动”的意思了,不是说什么都不用做。 我直接添加节点的意思是Set Nodeindex = TreeView.Nodes.Add(, , "爷1", "系统管理", "K1") Set Nodeindex = TreeView.Nodes.Add("爷1", tvwChild, "父1", "用户管理", "K2") 自动的意思是,连接数据库,通过代码将表填充treeview,这个是不是要考虑循环?然后问题就是连接库表,括号里的代码我不会写。。。
舉杯邀明月 2017-10-23
  • 打赏
  • 举报
回复
权限的数据库信息、组织结构又没有“国际标准”,怎么可能由控件给你实现自动填充!!! 这个只能自己用代码处理、显示啊,怎么总是想着“自动”??? 
脆皮大雪糕 2017-10-23
  • 打赏
  • 举报
回复
引用 9 楼 shendayehao 的回复:
[quote=引用 5 楼 chewinggum 的回复:] [quote=引用 2 楼 shendayehao 的回复:] [quote=引用 1 楼 chewinggum 的回复:] 先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img][/quote] 两种做法 1、当用户被点击,清空右边的树,获取该用户的所有权限数据,然后组织成树,填充 2、先将系统中所有的权限组织成树填充。当用户被点击,获取该用户的所有权限数据,然后逐个节点确定是否该勾选。[/quote] 按照方法2,可以直接添加节点生成树嘛?还是要连接库表自动填充? 我现在设计了三个表,用户表,权限表,用户权限对应表。[/quote] 用户表用来生成左边的列表 权限表用来生成右边的树 点选用户记录以后到用户权限对应表中查询其权限记录,然后填充右边树的复选框。
技术小noob 2017-10-23
  • 打赏
  • 举报
回复
引用 5 楼 chewinggum 的回复:
[quote=引用 2 楼 shendayehao 的回复:] [quote=引用 1 楼 chewinggum 的回复:] 先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img][/quote] 两种做法 1、当用户被点击,清空右边的树,获取该用户的所有权限数据,然后组织成树,填充 2、先将系统中所有的权限组织成树填充。当用户被点击,获取该用户的所有权限数据,然后逐个节点确定是否该勾选。[/quote] 按照方法2,可以直接添加节点生成树嘛?还是要连接库表自动填充? 我现在设计了三个表,用户表,权限表,用户权限对应表。
技术小noob 2017-10-23
  • 打赏
  • 举报
回复
引用 14 楼 Chen8013 的回复:
我还以为你想“给控件设置查询条件、然后控件自动刷新显示内容、自动钩选/不钩选相关项目”呢。 (自己不说明白,怪我咯……) 能不能“循环”,那要看你的“查询结果”的信息是什么样的啊…… 如果只有几项、十来项,你不清楚如何用循环,就用一堆IF……End If 来处理也可以。 但如果项目多了,肯定得考虑循环结构的流程来处理。  能不能实现,就要看你的数据库信息如何组织、查询结果能不能“反映层次、从属关系”了。
大佬能不能指条treeview.nodee.add的明路?子节点想不出怎么增加。。。
技术小noob 2017-10-23
  • 打赏
  • 举报
回复
我没学过VB,最近是在自学。。。

引用 8 楼 chewinggum 的回复:
[quote=引用 2 楼 shendayehao 的回复:]
[quote=引用 1 楼 chewinggum 的回复:]
先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。


list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img][/quote]
问问度娘,tree view的演示代码遍地都是[/quote]

大神,我的权限表是这样的。
然后添加了根节点:
Dim nodX As node
sql = "select Menu_Title from menu where ParentID IS NULL"
Rs.Open sql, conn, adOpenKeyset
If Rs.RecordCount <> 0 Then
Do While Rs.EOF = False
Set nodX = Trv.Nodes.Add(, , Rs.Fields("Menu_Title").Value, Rs.Fields("Menu_Title").Value, 1)
Rs.MoveNext
Loop
End If
子节点的relative和key、text不太好写了。该怎么办?这个Add怎么设计好。。。求指点。
舉杯邀明月 2017-10-21
  • 打赏
  • 举报
回复
引用 5 楼 chewinggum 的回复:
[quote=引用 2 楼 shendayehao 的回复:] [quote=引用 1 楼 chewinggum 的回复:] 先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img][/quote] 两种做法 1、当用户被点击,清空右边的树,获取该用户的所有权限数据,然后组织成树,填充 2、先将系统中所有的权限组织成树填充。当用户被点击,获取该用户的所有权限数据,然后逐个节点确定是否该勾选。[/quote] 我觉得应该是用方法2较好。 树的显示内容应该是一样的,选不同的用户时,仅是“钩选 与 不钩”的区别。
脆皮大雪糕 2017-10-21
  • 打赏
  • 举报
回复
引用 2 楼 shendayehao 的回复:
[quote=引用 1 楼 chewinggum 的回复:] 先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img][/quote] 两种做法 1、当用户被点击,清空右边的树,获取该用户的所有权限数据,然后组织成树,填充 2、先将系统中所有的权限组织成树填充。当用户被点击,获取该用户的所有权限数据,然后逐个节点确定是否该勾选。
脆皮大雪糕 2017-10-21
  • 打赏
  • 举报
回复
引用 2 楼 shendayehao 的回复:
[quote=引用 1 楼 chewinggum 的回复:] 先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img][/quote] 问问度娘,tree view的演示代码遍地都是
脆皮大雪糕 2017-10-21
  • 打赏
  • 举报
回复
引用 6 楼 Chen8013 的回复:
[quote=引用 5 楼 chewinggum 的回复:] [quote=引用 2 楼 shendayehao 的回复:] [quote=引用 1 楼 chewinggum 的回复:] 先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img][/quote] 两种做法 1、当用户被点击,清空右边的树,获取该用户的所有权限数据,然后组织成树,填充 2、先将系统中所有的权限组织成树填充。当用户被点击,获取该用户的所有权限数据,然后逐个节点确定是否该勾选。[/quote] 我觉得应该是用方法2较好。 树的显示内容应该是一样的,选不同的用户时,仅是“钩选 与 不钩”的区别。 [/quote] 看具体情况,如果系统总的权限就几十个,用2。 像那种几百个业务菜单,甚至细化到数据展示权限的,那还是用1比较不招人烦
技术小noob 2017-10-20
  • 打赏
  • 举报
回复
引用 1 楼 chewinggum 的回复:
先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
list里已经获取了所有用户,填充treeview的代码的代码不会写。[/img]
脆皮大雪糕 2017-10-20
  • 打赏
  • 举报
回复
先一个数据库查询,获取所有用户,填写list。当一条list被选中的时候再一个数据库查询,以该客户id之类的为条件查询客户权限列表,填充tree。
技术小noob 2017-10-20
  • 打赏
  • 举报
回复
引用 3 楼 Chen8013 的回复:
每个用户的“权限”,不是“平级关系”吗?
为何要用“树”控件?
各种权限,是分了类别的么……


按照菜单栏分类了。大概效果就是这样,目前的树是我手打的,不是连接数据库自动生成的。
舉杯邀明月 2017-10-20
  • 打赏
  • 举报
回复
每个用户的“权限”,不是“平级关系”吗? 为何要用“树”控件? 各种权限,是分了类别的么……

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧