Foxtable(狐表)用户栏目专家坐堂 → 窗口表权限控制问题


  共有1563人关注过本帖树形打印复制链接

主题:窗口表权限控制问题

帅哥哟,离线,有人找我吗?
douglas738888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8772 威望:0 精华:0 注册:2012/4/18 16:28:00
窗口表权限控制问题  发帖心情 Post By:2017/7/4 11:15:00 [只看该作者]

请教老师,下面代码写在窗口的AFTERLOAD,窗口中的表通过授权表进行权限管控后,整个表控件都不能使用被锁住了,能否通过授权表进行权限控制后,不能编辑窗口中的表,但能使用鼠标点击需要的表当前行进行阅览。

For Each dr1 As DataRow In DataTables("授权表").Select("',' + 分组名 + ',' like '%," & _UserGroupp & ",%' And 窗口 = '" & e. Form.Name & "'") 
    Dim ctls() As String = dr1("控件").split(",")
    For Each c As String In ctls
        e.Form.Controls(c).Enabled = Not dr1("不可见")
        e.Form.Controls(c).Enabled = Not dr1("不可编辑")
    Next
Next

 

另外,如果不使用授权表,在窗口的全局事件的ENTER写入下面代码不能实现权限控制,其他人依据能编辑

Dim ctl As WinForm.Control = e.Sender
Select Case ctl.BindingField 
    Case "项目策划书.项目编号","项目策划书.项目名称","项目策划书.电压等级","项目策划书.计划开始时间","项目策划书.计划完成时间","项目策划书.项目经理","项目策划书.编制日期","项目策划书.编制人员"
        If _UserGroupp = "副总" Then
            ctl.ReadOnly = BooleanEnum.False '允许编辑
        Else
            ctl.ReadOnly = BooleanEnum.True '禁止编辑
        End If
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/4 11:46:00 [只看该作者]

1、

 

For Each dr1 As DataRow In DataTables("授权表").Select("',' + 分组名 + ',' like '%," & _Usergroup & ",%' And 窗口 = '" & e. Form.Name & "'")
    Dim ctls() As String = dr1("控件").split(",")
    For Each c As String In ctls
        Dim obj = e.Form.Controls(c)
        If TypeOf obj Is winform.Table Then
            obj.visible = Not dr1("不可见")
            obj.Table.AllowEdit = Not dr1("不可编辑")
        Else
            obj.visible = Not dr1("不可见")
            obj.Enabled = Not dr1("不可编辑")
        End If
    Next
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/4 11:48:00 [只看该作者]

2、窗口表的权限控制,只能在窗口afterLoad事件,或者prepareEdit/startEdit事件控制。


 回到顶部