录入窗口与权限管理
输入框的授权
前面所有有关编辑的权限设置,都是针对数据表的。
如果采用录入窗口编辑数据,那么这些权限设置是无效的,我们需要另外的方法。
假定设计了一个录入窗口用于录入表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另一个方法是在窗口的AfterLoad事件设置代码,隐藏或禁用当前用户无权使用的按钮,例如我们在AfterLoad事件设置代码:
If
User.Group <> "经理" Then这样当非经理级别的用户打开窗口后,Button1和Button3将处于禁用状态,如果你想隐藏这两个按钮,只需将上述代码中的Enabled替换为Visible。