以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教可视化授权的转换  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97584)

--  作者:乡里出城
--  发布时间:2017/3/15 10:47:00
--  请教可视化授权的转换

教材上的代码:

For Each t As Table In Tables
    t.Visible =
True
    t.AllowEdit =
true

    For
Each c As Col In t.Cols
        c.Visible =
True
        c.AllowEdit =
True
    Next

Next
Tables
("授权表").Visible = (User.Type <> UserTypeEnum.User )
If
User.Type = UserTypeEnum.User Then
   
For Each dr As DataRow In DataTables("授权表").Select("分组名 = \'" & User.Group & "\'" )
        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


现想转换成可见或可编辑的授权,应该怎么改,我直接把上述的代码改成下面的方式,但没法正常授权,不知道是不是逻辑判断的问题:


For Each t As Table In Tables
    t.Visible = FALSE

    t.AllowEdit = FALSE

    For
Each c As Col In t.Cols
        c.Visible = FALSE

        c.AllowEdit = FALSE

    Next

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

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


麻烦帮一下忙,谢谢!


--  作者:有点色
--  发布时间:2017/3/15 10:56:00
--  

考虑红色问题,再考虑如果表可见,那么字段是不是也要可见等等。理清你的逻辑。

 

Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("分组名 = \'" & User.Group & "\'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = dr("可见")
            Tables(dr("表名")).AllowEdit = dr("可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = dr("可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = dr("可编辑")
            If dr("可见") Then
                Tables(dr("表名")).Visible = True
            End If
            If dr("可编辑") Then
                Tables(dr("表名")).Cols(dr("列名")).Visible = True              
            end if

        End If
    Next
End If


--  作者:乡里出城
--  发布时间:2017/3/15 13:33:00
--  

OK,谢谢!

[此贴子已经被作者于2017/3/15 13:39:12编辑过]