录入窗口与权限管理

输入框的授权

前面所有有关编辑的权限设置,都是针对数据表的。
如果采用录入窗口编辑数据,那么这些权限设置是无效的,我们需要另外的方法。

假定设计了一个录入窗口用于录入表A的数据,要求张三负责输入第一列、第二列、第三列的内容,李四负责输入第五列、第六列、第七列的内容。

要实现此目的,只需在窗口的全局事件Enter事件中设置代码:

Dim ctl As WinForm.Control = e.Sender
Select
Case ctl.BindingField
    Case
"
A.第一列", "A.第二列", "A.第三列"
        If User.Name =
"
张三" Then
            ctl.ReadOnly = BooleanEnum.False
'
允许编辑
        Else
            ctl.ReadOnly = BooleanEnum.True
'
禁止编辑
        End If
    Case
"
A.第四列", "A.第五列", "A.第六列"
        If User.Name =
"
李四" Then
            ctl.ReadOnly = BooleanEnum.False
'
允许编辑
        Else
            ctl.ReadOnly = BooleanEnum.True
'
禁止编辑
        End
If

End
Select

参考: BindingField  ReadOnly

如果只有个别的文本框需要进行权限控制,就没有必要使用全局事件,将代码直接设置在文本框的Enter事件即可。
例如窗口中有一文本框,只有张三才能在其中输入数据,可将此文本框的Enter事件代码设置为:

If User.Name = "张三" Then
   
ctl.ReadOnly = BooleanEnum.False '允许编辑
Else
   
ctl.ReadOnly = BooleanEnum.True '禁止编辑
End If

按钮的授权

除了输入框,有些按钮可能也需要授权的,只能特定的用户才能执行。
有两个方法可以对按钮进行授权,假定某个按钮执行经理级别的用户才能执行,可以将该按钮的Click事件代码改为:

If User.Group = "经理" Then
   
'原来的代码
Else

    MessageBox
.show("你无权执行此项操作!"
)
End
If

另一个方法是在窗口的AfterLoad事件设置代码,隐藏或禁用当前用户无权使用的按钮,例如我们在AfterLoad事件设置代码:

If User.Group <> "经理" Then
    e.Form.Controls(
"Button1").Enabled = False
    e.Form.Controls(
"Button3").Enabled = False
End
If

这样当非经理级别的用户打开窗口后,Button1和Button3将处于禁用状态,如果你想隐藏这两个按钮,只需将上述代码中的Enabled替换为Visible。

 

 


本页地址:http://www.foxtable.com/webhelp/topics/2342.htm