For Each dt8 As Table In Tables
For i As Integer = 0 To dt8.Cols.Count Step - 1
Dim strs As String() = _UserRoles.split(",")
Dim rs As String
For Each ss As String In strs
rs = rs & ",'" & ss & "'"
Next
Dim drs11 As List(Of DataRow) = DataTables("列操作权限表").Select("表名 = '" & dt8.Name & "' and 列名 like '%" & dt8.Cols(i).Name & "%' and (角色 in (" & rs.trim(",") & ") or 角色 = '" & _UserName & "') And 不可见=true")
Dim drs12 As List(Of DataRow) = DataTables("列操作权限表").Select("表名 = '" & dt8.Name & "' and 列名 like '%" & dt8.Cols(i).Name & "%' and (角色 in (" & rs.trim(",") & ") or 角色 = '" & _UserName & "') And 不可见=false")
If drs11.Count > 0 And drs12.Count > 0 Then
Tables(dt8.Name).Cols(dt8.Cols(i).Name).Visible = True
Else
If drs11.Count > 0 And drs12.Count = 0 Then
Tables(dt8.Name).Cols.Remove(dt8.Cols(i).Name)
End If
End If
Next
Next
某个用户同时有多个角色,在权限表中查找,如果某个角色对某列不可见,但另一个角色又是可见的,只要有一个角色是可见的则该列对该用户为可见;如果针对某列找不到可见的角色但有不可见的角色,则对该用户移除该列(不希望用手动取消隐藏)。其中角色列是单值字段,列名是多值字段。
有试过用其他代码,但发现移除不干净
上面的结果没有生效,求助
[此贴子已经被作者于2023/10/11 16:37:45编辑过]