以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口表权限控制问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=103259)

--  作者:douglas738888
--  发布时间: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


--  作者:有点甜
--  发布时间: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


--  作者:有点甜
--  发布时间:2017/7/4 11:48:00
--  

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