Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
gaoyong30000 发表于: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编辑过]
2楼
gaoyong30000 发表于:2011/12/29 23:19:00
该怎么弄啊~~
3楼
狐狸爸爸 发表于:2011/12/30 9:06:00

将你的例子发上来

4楼
gaoyong30000 发表于:2011/12/30 10:09:00

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

 

 例子已上传

5楼
狐狸爸爸 发表于: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
6楼
gaoyong30000 发表于: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楼
狐狸爸爸 发表于: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

 

 

 

 

 

 

 

 

 

8楼
gaoyong30000 发表于:2011/12/30 15:07:00

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

共8 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 3 queries.