以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 目录树的选定状态 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67426) |
-- 作者:blsu33 -- 发布时间:2015/4/24 8:35:00 -- 目录树的选定状态 老师, 这个帖子:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=67353&authorid=0&page=2&star=1 昨天回去测试,有两个问题,不知道怎么改。 第一个 角色的目录树,切换经理与新角色,权限的目录树的选定状态与datetable(“权限管理”)的“角色”列的数据不一致,应该是角色的目录树的下列代码不对,求老师在给看下: Vars("Tree") = False |
-- 作者:blsu33 -- 发布时间:2015/4/24 8:39:00 -- 第二个问题,是想权限目录树点击父级的节点,自动选定子集的节点,同时,更新datetable(“权限管理”)的“角色”列: 下面4段代码昨天注释掉了,应该怎么加进去呢 \'For Each nd As WinForm.TreeNode In e.Node.AllNodes |
-- 作者:Bin -- 发布时间:2015/4/24 8:50:00 -- 第一个问题.按照帮助的做,利用FIND 不要遍历N次 第二个问题 For Each nd As WinForm.TreeNode In e.Node.AllNodes
nd.Checked = e.Node.Checked Next |
-- 作者:Bin -- 发布时间:2015/4/24 8:53:00 -- 第二个问题的原理是 你已经写好了更新datetable(“权限管理”)的“角色”列 没有必要再写一遍,你只需要为CHecked属性复制,它会触发事件,自己走一遍流程. |
-- 作者:blsu33 -- 发布时间:2015/4/27 14:15:00 -- BIN 老师, 第一个问题我进行了修改, Dim nd2 As WinForm.TreeNode = tr2.SelectedNode Select Case nd1.Level Case 0 tr2.BuildTree("权限管理","功能主模块|一级模块|二级模块|权限",,"_SortKey") Case Else For Each dr As DataRow In DataTables("权限管理").DataRows If dr("角色").Contains(nd1.ParentNode.Text) Then dr("显示") = True Else dr("显示") = False End If Next tr2.BuildTree("权限管理","功能主模块|一级模块|二级模块|权限","[显示] = \'true\'","_SortKey") If tr2.AllNodes.count = 0 And nd1.text.StartsWith("新") = False Then MessageBox.Show("请先设置父级角色的权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) End If End Select Vars("Tree") = False Dim dr1 As DataRow Select Case e.Node.Level Case 0 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.Name & "\' And 权限 Is Null") Case 1 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.ParentNode.Name & "\' And 一级模块 = \'" & e.Node.Name & "\' And 权限 Is Null ") Case 2 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.ParentNode.ParentNode.Name & "\' And 一级模块 = \'" & e.Node.ParentNode.Name & "\' And 二级模块 = \'" & e.Node.Name & "\' And 权限 Is Null ") Case 3 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.ParentNode.ParentNode.ParentNode.Name & "\' And 一级模块 = \'" & e.Node.ParentNode.ParentNode.Name & "\' And 二级模块 = \'" & e.Node.ParentNode.Name & "\'And 权限 = \'" & e.Node.Name & "\'") End Select Dim nms As New List(of String) If dr1 IsNot Nothing AndAlso dr1.IsNull("角色") = False nms.AddRange(dr1("角色").Split(",")) End If For Each nd As WinForm.TreeNode In tr2.AllNodes nd.Checked = nms.Contains(nd.Name) Next Vars("Tree") = True 想要达到点击目录树1角色 ,让目录树2显示已经选定的权限范围,未显示,麻烦老师看一下,哪里有误。
|
-- 作者:Bin -- 发布时间:2015/4/27 14:42:00 -- 上例子吧 |
-- 作者:blsu33 -- 发布时间:2015/4/27 14:49:00 -- BIN,老师, 第二个问题也放在里面了,也有问题,能力有限,没有弄明白您说的。 |
-- 作者:Bin -- 发布时间:2015/4/27 14:58:00 -- 第二个问题之前不是给你写好了么? 第一个问题我记得之前都完成的了啊 |
-- 作者:blsu33 -- 发布时间:2015/4/27 15:07:00 -- 老师, 之前的例子,切换左面的目录树(经理/新角色),右面的权限,选定状态,不正确。 希望通过,左面的目录树的同步右面的权限,选定状态 代码是这个: ...... Vars("Tree") = False Dim dr1 As DataRow Select Case e.Node.Level Case 0 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.Name & "\' And 权限 Is Null") Case 1 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.ParentNode.Name & "\' And 一级模块 = \'" & e.Node.Name & "\' And 权限 Is Null ") Case 2 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.ParentNode.ParentNode.Name & "\' And 一级模块 = \'" & e.Node.ParentNode.Name & "\' And 二级模块 = \'" & e.Node.Name & "\' And 权限 Is Null ") Case 3 dr1 = DataTables("权限管理").Find("功能主模块 = \'" & e.Node.ParentNode.ParentNode.ParentNode.Name & "\' And 一级模块 = \'" & e.Node.ParentNode.ParentNode.Name & "\' And 二级模块 = \'" & e.Node.ParentNode.Name & "\'And 权限 = \'" & e.Node.Name & "\'") End Select Dim nms As New List(of String) If dr1 IsNot Nothing AndAlso dr1.IsNull("角色") = False nms.AddRange(dr1("角色").Split(",")) End If For Each nd As WinForm.TreeNode In tr2.AllNodes nd.Checked = nms.Contains(nd.Name) Next Vars("Tree") = True |
-- 作者:Bin -- 发布时间:2015/4/27 15:14:00 -- 和帮助是完全一样的,你要改的只是不同级别的节点,多加哥条件判断而已.你直接复制帮助代码即可 |