以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  目录树形式的授权案例修改的问题,角色无法赋值,求老师指点  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144842)

--  作者:hitzfeld
--  发布时间:2019/12/31 13:07:00
--  目录树形式的授权案例修改的问题,角色无法赋值,求老师指点
我要实现的是:在右侧勾选后,把对应的角色名称写入角色授权的“角色”单元格,并以逗号分隔,其它的都好了,就是这个赋值一直无法赋值,求版主指点下,谢谢!
ADMIN密码是1

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


--  作者:有点蓝
--  发布时间:2019/12/31 13:55:00
--  
建议每个角色一行数据,不要使用多值字段。多值字段判断控制都非常麻烦。
--  作者:有点蓝
--  发布时间:2019/12/31 14:07:00
--  

Dim tr1 As WinForm.TreeView = Forms("角色授权").Controls("TreeView1")
If tr1.SelectedNode Is Nothing Then
    msgbox("请选择一个角色")
    Return ""
End If
Dim role As String = tr1.SelectedNode.Text.Replace("←","")
Dim tr2 As WinForm.TreeView = Forms("角色授权").Controls("TreeView2")
For Each n As WinForm.TreeNode In tr2.AllNodes
    If n.Level = 1 AndAlso n.Checked
        Dim dr As DataRow = DataTables("角色授权").Find("窗口=\'" & n.ParentNode.Text & "\' And 控件=\'" & n.Text & "\'")
        If dr Is Nothing Then
            dr = DataTables("角色授权").AddNew
            dr("窗口") = n.ParentNode.Text
            dr("控件") = n.Text
            dr("角色") = role
        Else
            If dr.IsNull("角色")
                dr("角色") = role
            Else
                Dim lst As new List(of String)
                lst.AddRange(dr("角色").split(","))
                If lst.Contains(role) = False Then
                    lst.Add(role)
                End If
                dr("角色") = String.Join(",",lst.ToArray)
            End If
        End If
    End If
Next

--  作者:hitzfeld
--  发布时间:2019/12/31 16:08:00
--  
以下是引用有点蓝在2019/12/31 13:55:00的发言:
建议每个角色一行数据,不要使用多值字段。多值字段判断控制都非常麻烦。

谢谢蓝老师的指点,这个问题我有考虑到,就是觉得很纠结,如果是用一个角色一组记录的话,比如说,一个常用的小型系统,100个表(或者窗口),每张表(或者窗口)有10个需要授权的控件,系统有10个角色,排列组合下来就需要10000条记录,如果再增加的话,这个表会非常庞大,感觉管理起来也很困难。多值字段显示角色的优点是一目了然,整个表看起来很清晰。但是正如您所说的,后期的代码操作难度很大。狐表教程里面提供的案例也不太好,以表(窗口、控件)定角色的方式太不合理了,用户实际操作非常容易发生混乱,我希望能做个好点的案例,以角色定表(窗口、控件)权限,但是碰到太多太多困难了。初学狐表,整体的设计思路还是不够清晰,属于非常迷茫的,还望您多多指导。


--  作者:有点蓝
--  发布时间:2019/12/31 16:23:00
--  
就算是100W条记录也是小意思啊。权限管理一般是给管理员使用的,也就有新功能,或者有什么调整的才用一用,如果做了管理窗口,基本都不需要看到这个表数据的,也不应该开放这个表数据给用户直接编辑了,所以表格里显示什么格式对用户来说没有什么意义。普通用户更不可能会看到这个表的数据。但是普通用户可能会大量需要进行权限的判断操作,这时使用多值字段权限判断就麻烦多了。也就是权限管理使用的机会不多,特别是到后期可能几个月才调整一次。但是权限判断使用是很频繁的,是伴随着整个软件周期的,所以提高权限判断的效率比所谓的一目了然当然重要多了。