以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  导航栏怎么授权  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=148215)

--  作者:爱相随
--  发布时间:2020/4/2 14:43:00
--  导航栏怎么授权
老师,我有一导航窗口,通过导航窗口的每一个节点打开切换各个表,现在需要授权给不同的人,让不同的人打开导航栏看到的是不一样的,打开后看到的表也不一样。比如导航栏有工程板块,有财务板块,有销售板块。比如工程板块的人打开项目后可能看不到财务板块的某些节点,也就打不开相应的表。
无论是用“让不同用户处理不同的表”

例如在项目事件AfteOpenProject事件中设置代码:

Select Case User.Name
   
Case "张三","李四"
       
Tables("表A").Visible = False
    Case
"王五"
       
Tables("表B").Visible = False
End
Select

还是用“可视化授权的实现”

Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If
User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("用户名 = \'" & User.Name & "\'" )
        If
dr.IsNull("列名")
Then
       
    Tables(dr("表名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).AllowEdit = Not dr("不可编辑")

        Else
           
Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables
(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End
If
    Next
End
If

无论前面怎么设计,在导航窗口代码下各节点都不适用。进去后所有人的看到表的权限还是一样的。

Select Case e.Node.Name

    Case "债务汇总表"(要使此节点张三看不见,张三也就没法打开这个表,怎么加入限制代码??或者有其他处理方式?)

        MainTable = Tables("zwhzb")

    Case "新增协议明细表"

        MainTable = Tables("xzxymxb")

    Case "新增放款明细表"

        MainTable = Tables("xzfkmxb")

    Case "还本明细表"(要使此节点李四看不见,李四也就没法开打这个表,怎么加入限制代码??或者有其他处理方式?

        MainTable = Tables("hbmxb")

    Case "利息明细表"

        MainTable = Tables("lxmxb")

    Case "工程款明细表"

        MainTable = Tables("gckmx")

    Case "工程款支付明细表"

        MainTable = Tables("gckzfmxb")

    Case "还本付息计划表"

        MainTable = Tables("hbfxjhb")

     Case "债务台账汇总表(1级)"

        MainTable = Tables("zwtzhzb3")

     Case "债务台账汇总表(2级)"

        MainTable = Tables("zwtzhzb2")

     Case "债务台账汇总表(3级)"

        MainTable = Tables("zwtzhzb1")

     Case "年度还本付息计划表"

        MainTable = Tables("ndhbfxjhb")


End Select

请问一下在导航窗口怎么授权呢??

[此贴子已经被作者于2020/4/2 15:17:56编辑过]

--  作者:有点蓝
--  发布时间:2020/4/2 16:15:00
--  
方法1、在导航窗口afterload,遍历所有导航栏然后到权限表查询有没有权限,如果没有就隐藏这个导航栏
2、点击的时候再到权限表查询有没有权限

Select Case e.Node.Name

    Case "债务汇总表"(要使此节点张三看不见,张三也就没法打开这个表,怎么加入限制代码??或者有其他处理方式?)

if DataTables("授权表").Find("用户名 = \'" & User.Name & "\' and 表名 =\'债务汇总表\' and 不可见=false" ) isnot nothing then

        MainTable = Tables("zwhzb")

else

msgbox(没有权限)

end if

    Case "新增协议明细表"