授权代码:
1、treeview1: afterselectnode
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim dr As DataRow
If e.node.Level = 0 Then
dr = DataTables("授权").Find("分组 = '" & e.Node.Name & "' And 权限 Is Null")
Else
dr = DataTables("授权").Find("分组 = '" & e.Node.ParentNode.Name & "' And 权限 = '" & e.Node.Name & "'")
End If
Dim nms As New List(of String)
If dr IsNot Nothing AndAlso dr.IsNull("用户") = False
nms.AddRange(dr("用户").Split(","))
End If
For Each nd As WinForm.TreeNode In trv2.AllNodes
nd.Checked = nms.Contains(nd.Name)
Next
2、treeview2: afterselectnode
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nd1 As WinForm.TreeNode = trv1.SelectedNode
Dim dr As DataRow
If e.Node.ParentNode IsNot Nothing Then '取消父节点的选中标记,因为选中子节点,就不要选中父节点了
e.Node.ParentNode.Checked = False
End If
For Each cnd As WinForm.TreeNode In e.Node.Nodes '取消子节点的选中标记,因为选中父节点,就不要选中子节点了
cnd.Checked = False
Next
If nd1.Level = 0 Then
dr = DataTables("授权").Find("分组 = '" & nd1.Name & "' And 权限 Is Null")
Else
dr = DataTables("授权").Find("分组 = '" & nd1.ParentNode.Name & "' And 权限 = '" & nd1.Name & "'")
End If
If dr IsNot Nothing Then
Dim nms As String
For Each nd2 As WinForm.TreeNode In trv2.AllNodes
If nd2.Checked Then
nms = nms & "," & nd2.Name
End If
Next
If nms > "" Then
dr("用户") = nms.Trim(",")
Else
dr("用户") = Nothing
End If
End If
3、添加分类
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim i As Integer
Do
i = i+ 1
Dim nm As String = "分组" & i
If trv.Nodes.Contains(nm) = False
Dim dr As DataRow = DataTables("授权").AddNew
Dim nd As WinForm.TreeNode = trv.Nodes.Add(nm)
dr("分组") = nm
trv.SelectedNode = nd
trv.BeginEdit
Exit Do
End If
Loop
4、增加授权
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim pd As WinForm.TreeNode = trv.SelectedNode
If pd.Level = 1 Then
pd = pd.ParentNode
End If
Dim i As Integer
Do
i = i+ 1
Dim nm As String = "权限" & i
If pd.Nodes.Contains(nm) = False
Dim nd As WinForm.TreeNode = pd.Nodes.Add(nm)
Dim dr As DataRow = DataTables("授权").AddNew()
dr("分组") = pd.name
dr("权限") = nm
trv.SelectedNode = nd
trv.BeginEdit
Exit Do
End If
Loop
5、窗口的afterload
Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
trv1.BuildTree("授权","分组|权限")
trv2.BuildTree("Users","Group|Name")
If Trv1.Nodes.Count > 0 Then
Trv1.Nodes(0).Expand()
End If
trv2.ExpandAll()
6、shouquan
If User.Type <> UserTypeEnum.User Then ' 如果是开发者或者管理员
Return True '则具备所有权限
End If
Dim dt As DataTable = DataTables("授权")
Dim dr As DataRow
'首先判断分组的授权用户是否包括此用户或此用户所属的分组
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
'然后判断权限的授权用户是否包括此用户或此用户所属的分组
If Args(1) = "" Then
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
甜老师,我是新手,请您教我,谢谢。
[此贴子已经被作者于2018/1/2 15:17:37编辑过]