以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口界面授权显示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161374)

--  作者:北狐
--  发布时间:2021/3/15 15:58:00
--  窗口界面授权显示
If User.Type = 3 Then
    For Each c As Winform.Control In e.Form.Controls
        c.Visible = False
    Next
    
    Dim dr1 As DataRow = DataTables("Users").Find("Name = \'" & User.Name & "\'")
    
    
    For Each dr2 As DataRow In DataTables("授权表").Select("用户组  like \'%"&dr1("roleCode")& "%\'")
        Forms("主界面").Controls(dr2("窗体")).TabPages(dr2("页面名称")).Visible = True
    Next
    
    For Each dr As DataRow In DataTables("授权表").Select("用户组 like \'%"&dr1("roleCode")& "%\'and 控件<>\'\'") \'
        Forms("主界面").Controls(dr("控件")).Visible  = True
    Next
    
End If
想做到默认所有控件不显示,再依据授权表的进行控件的显示,
但以上代码结果是所有控件都不显示,未根据授权表时进行显示控件
求老师帮忙看下是什么原因?

[此贴子已经被作者于2021/3/15 16:14:51编辑过]

--  作者:有点蓝
--  发布时间:2021/3/15 16:24:00
--  
    For Each c As Winform.Control In e.Form.Controls
        c.Visible = False
    Next
上面代码是把所有控件全部隐藏了,包括容器,检查一下授权表设置有没有对容器控件的控制?
比如有一个panel,panel里面有一个textbox,上面代码panel和textbox都会影响了,那么授权表里有没有panel的设置?还是只有textbox的设置?
如果panel1里有panel2,panel2里有panel3,panel3里有.......那么panel1、panel2、panel3、...都要在授权表设置

--  作者:北狐
--  发布时间:2021/3/15 16:28:00
--  
没有用到panel,但有用到textbox,授权表里面没设置
[此贴子已经被作者于2021/3/15 16:29:43编辑过]

--  作者:有点蓝
--  发布时间:2021/3/15 16:41:00
--  
那就是DataTables("授权表").Select没有查询到符合条件的数据
--  作者:北狐
--  发布时间:2021/3/15 16:58:00
--  
DataTables("授权表").Select条件能查到
但有用到TabControl,
--  作者:有点蓝
--  发布时间:2021/3/15 17:04:00
--  
TabControl在授权表设置了吗?理由看2楼
--  作者:北狐
--  发布时间:2021/3/15 17:12:00
--  
有授权设置了,但能不能控制TabControl的对应页面的授权显示,而不是整个TabControl都显示出来的,每个页面都有独立名称的
[此贴子已经被作者于2021/3/15 17:12:50编辑过]

--  作者:有点蓝
--  发布时间:2021/3/15 17:16:00
--  
请上传实例说明
--  作者:北狐
--  发布时间:2021/3/15 18:33:00
--  
找到原因了,代码改下面就实现了
If User.Type = 3 Then
    For Each c As Winform.Control In e.Form.Controls
        c.Visible = False
        Forms("主界面").Controls("主界面").Visible = True
\'标签控件
Forms("主界面").Controls("Label01").Visible = True
Forms("主界面").Controls("Label1").Visible = True
Forms("主界面").Controls("Label10").Visible = True
Forms("主界面").Controls("Label11").Visible = True
Forms("主界面").Controls("Label12").Visible = True
Forms("主界面").Controls("Label13").Visible = True
Forms("主界面").Controls("Label4").Visible = True
Forms("主界面").Controls("Label5").Visible = True
Forms("主界面").Controls("Label6").Visible = True
Forms("主界面").Controls("Label7").Visible = True
Forms("主界面").Controls("Label8").Visible = True
Forms("主界面").Controls("Label9").Visible = True
\'日期控件
Forms("主界面").Controls("StartDate").Visible = True
Forms("主界面").Controls("EndDate").Visible = True
Forms("主界面").Controls("StartDate1").Visible = True
Forms("主界面").Controls("EndDate1").Visible = True
Forms("主界面").Controls("StartDate2").Visible = True
Forms("主界面").Controls("EndDate2").Visible = True
Forms("主界面").Controls("StartDate3").Visible = True
Forms("主界面").Controls("EndDate3").Visible = True
\'文本框控件
Forms("主界面").Controls("cmbCustomer").Visible = True
Forms("主界面").Controls("pr").Visible = True
Forms("主界面").Controls("smartI").Visible = True
Forms("主界面").Controls("TextBox1").Visible = True      
        Dim dr1 As DataRow = DataTables("Users").Find("Name = \'" & User.Name & "\'") 
      
        For Each dr2 As DataRow In DataTables("授权表").Select("(用户组 not like \'%"&dr1("roleCode")& "%\' or  用户组 is null)  and 控件名称 is null ")
            Forms("主界面").Controls(dr2("窗体")).TabPages(dr2("页面名称")).Visible = False
        Next
        
        
        For Each dr As DataRow In DataTables("授权表").Select("用户组 like \'%"&dr1("roleCode")& "%\'and 控件<>\'\'") \'
            Forms("主界面").Controls(dr("控件")).Visible  = True
        Next
    Next
End If