Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树形式的授权


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

主题:[求助]目录树形式的授权

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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10071 威望:0 精华:0 注册:2013/11/8 15:27:00
[求助]目录树形式的授权  发帖心情 Post By:2018/5/10 16:27:00 [只看该作者]

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree(
"授权","分组|权限")
For
Each u As UserInfo In Users
    If
u.Type = UserTypeEnum.User Then
        If
trv2.Nodes.Contains(u.Group) = False Then
            trv2.Nodes.Add(u.Group)

        End
If
        trv2.Nodes(u.Group).Nodes.Add(u.Name)

    End
If
Next

Trv1.Nodes(
0
).Expand()
trv2.ExpandAll()

 

照抄的,出现以下错误,什么原因呢。内部数据源

 


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180510162625.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/5/10 16:27:14编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/10 16:42:00 [只看该作者]

这样测试

 

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree("授权","分组|权限")
For Each u As UserInfo In Users
    If u.Type = UserTypeEnum.User Then

msgbox(u.group)

If u.Group > "" Then
        If trv2.Nodes.Contains(u.Group) = False Then
            trv2.Nodes.Add(u.Group)
        End If
        trv2.Nodes(u.Group).Nodes.Add(u.Name)

End If
    End If
Next

msgbox(trv1.nodes.count)
Trv1.Nodes(0).Expand()
trv2.ExpandAll()

 


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


加好友 发短信
等级:六尾狐 帖子:1303 积分:10071 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2018/5/10 22:17:00 [只看该作者]

以下为窗口AfterLoad代码

Dim tp1 As WinForm.TopicPage

tp1 = Forms("目录窗口").Controls("TopicBar1").Pages("页面1")
if Functions.Execute("ShouQuan","财务人员","系统管理") Then
tp1.Visible = True
Else
tp1.Visible = False
End If

 


此主题相关图片如下:qq图片20180510221332.png
按此在新窗口浏览图片
 

 

当用权限表的用户登录时提示以下错误,这是什么原因呢

 


此主题相关图片如下:qq图片20180510221006.png
按此在新窗口浏览图片

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/10 22:22:00 [只看该作者]

改代码

 

If User.Type <> UserTypeEnum.User Then ' 如果是开发者或者管理员
    Return True '则具备所有权限
End If
Dim dt As DataTable = DataTables("授权")
Dim dr As DataRow
If Args(1) = "" Then
    '首先判断分组的授权用户是否包括此用户或此用户所属的分组
    dr = dt.Find("分组 = '" & args(0) & "' And 权限 Is Null" )
    If dr Is Nothing Then
        MessageBox.show("不存在名为""" & args(0) & "分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Return False
    End If
    If dr.IsNull("用户") = False Then
        Dim nms() As String = dr("用户").Split(",")
        For Each nm As String In nms
            If nm = User.Group OrElse nm = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
                Return True '返回True
            End If
        Next
    End If
    Return False
End If
'然后判断权限的授权用户是否包括此用户或此用户所属的分组

dr = dt.Find("分组 = '" & args(0) & "' And 权限 = '" & args(1) & "'")
If dr Is Nothing Then
    MessageBox.show("不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return False
End If
If dr.IsNull("用户") = False Then
    Dim nms() As String = dr("用户").Split(",")
    For Each nm As String In nms
        If nm = User.Group OrElse nm = User.Name Then '如果授权用户包括登录用户所属的分组或其用户名
            Return True '返回True
        End If
    Next
End If
Return False


 回到顶部