Foxtable(狐表)用户栏目专家坐堂 → [求助]关于目录树授权的一个细节问题!【例子已上传】


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

主题:[求助]关于目录树授权的一个细节问题!【例子已上传】

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
[求助]关于目录树授权的一个细节问题!【例子已上传】  发帖心情 Post By:2011/12/29 16:52:00 [只看该作者]

选择了财务部,点击右边目录树的A卡管理后    授权表上是添加的财务部


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


但是我要求是添加的左边财务部下面的 三个岗位到授权表里,例如:

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


右边目录树Afterchecknode代码如下,请问如何更改:
Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nd1 As WinForm.TreeNode = tr1.SelectedNode
Dim nd2 As WinForm.TreeNode = tr2.SelectedNode
Dim dr As DataRow
If tr2.Focused AndAlso nd1 IsNot Nothing  Then
    If nd2.Level <> 0 Then
        dr = DataTables("授权").Find("权限 = '" & nd2.Text & "'")
        If nd2.Checked = True Then
            dr("用户") = nd1.Text.trim("←") + "," + dr("用户")
        Else
            dr("用户") = dr("用户").Replace(nd1.Text.trim("←"),"")
        End If
        dr("用户") = dr("用户").Trim(",")
    End If
    For Each nd As WinForm.TreeNode In e.Node.AllNodes
        dr = DataTables("授权").Find("权限 = '" & nd.Text.trim("←") & "'")
        nd.Checked  = e.Node.Checked
        If nd.Checked = True Then
            dr("用户") = nd1.Text.trim("←") + "," + dr("用户")
        Else
            dr("用户") = dr("用户").Replace(nd1.Text.trim("←"),"")
            dr("用户") = dr("用户").Trim(",")
        End If
    Next
End If
[此贴子已经被作者于2011-12-30 10:09:33编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/12/29 23:19:00 [只看该作者]

该怎么弄啊~~

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/30 9:06:00 [只看该作者]

将你的例子发上来


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/12/30 10:09:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:授权.rar

 

 例子已上传


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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/30 11:12:00 [只看该作者]

Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
If tr2.Focused  AndAlso e.node.Level > 0  Then
    Dim nd1 As WinForm.TreeNode = tr1.SelectedNode
    Dim nd2 As WinForm.TreeNode = e.node
    Dim dr As DataRow
    Dim nds As New List(of winform.treenode)
    If nd1.Nodes.count = 0 Then
        nds.add(nd1)
    Else
        nds.addrange(nd1.nodes)
    End If
    For Each nd As WinForm.TreeNode In nds
        dr = DataTables("授权").Find("权限 = '" & nd2.Text & "'")
        Dim nms As New List(of String)
       nms.Addrange(dr("用户").trim(",").split(","))
        Dim nm As String  = nd.Text.trim("←")
        If nd2.Checked = True Then
            If nms.Contains(nm) = False Then
                nms.add(nm)
            End If
        Else
            If nms.Contains(nm) Then
                nms.Remove(nm)
            End If
        End If
        dr("用户") = String.Join(",",nms.ToArray)
    Next
End If

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/12/30 13:56:00 [只看该作者]

老大 还有个情况 没纳入代码里面!

 

If tr2.Focused  AndAlso e.node.Level = 0  Then

 

例如:左边目录树选择备件部,右边目录树选 A卡管理 为true后其根节点都会为true  而且会在授权表中权限分组为 A卡管理 的所有行里添加 备件下面的所有岗位!

 

        还有个功能 就是右边目录树 如果子节点全部为true 其父节点 也会为true

 


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-12-30 13:58:17编辑过]

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


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/30 14:15:00 [只看该作者]

呵呵,其实帮助的例子很好,何必这么辛苦的自己做呢,可以单项授权,也可以整个分类授权,不是更灵活和实用吗?

这种玩意,可不是随便能改的,需要非常老练才行:

 

Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
If tr2.Focused AndAlso e.node.Level = tr2.SelectedNode.Level Then
    Dim dr As DataRow
    Dim nds1 As New List(of winform.treenode)
    If tr1.SelectedNode.Nodes.count = 0 Then
        nds1.add(tr1.SelectedNode)
    Else
        nds1.addrange(tr1.SelectedNode.nodes)
    End If
    Dim nds2 As New List(of winform.treenode)
    If tr2.SelectedNode.Nodes.count = 0 Then
        nds2.add(tr2.SelectedNode)
    Else
        nds2.addrange(tr2.SelectedNode.nodes)
    End If
    For Each nd1 As WinForm.TreeNode In nds1
        For Each nd2 As winform.treenode In nds2
            dr = DataTables("授权").Find("权限 = '" & nd2.Text & "'")
            Dim nms As New List(of String)
            nms.Addrange(dr("用户").trim(",").split(","))
            Dim nm As String  = nd1.Text.trim("←")
            If tr2.SelectedNode.Checked = True Then
                If nms.Contains(nm) = False Then
                    nms.add(nm)
                End If
            Else
                If nms.Contains(nm) Then
                    nms.Remove(nm)
                End If
            End If
            If nd2.Checked <> tr2.SelectedNode.Checked Then
                nd2.Checked = tr2.SelectedNode.Checked
            End If
            dr("用户") = String.Join(",",nms.ToArray)
        Next
    Next
End If

 

 

 

 

 

 

 

 

 


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2011/12/30 15:07:00 [只看该作者]

是啊 被绕得头疼死了   多谢老大了!


 回到顶部