我们之前的例子,都是在编辑之前,执行PrepareEdit事件,判断用户是否有编辑此列、此行或此单元格的权限。
权限管理不会总是如此简单,有时不需要在编辑前进行判断,而是在编辑后,判断用户输入的值是否超出授权范围。
例如给订单打折,不同等级的用户,不同的订购数量,能打折的程度是不同的。
此时我们不能使用PrepareEdit事件,因为这个是在编辑前执行,要在编辑后判断输入值是否超出授权范围,通常用ValidateEdit或者DataColChanging事件。
假定订单表中有个折扣列,普通业务员给出的折扣不能超过5%,张经理则不能超过10%,对于订购数量达到1000的订单,张经理有权给出15%的折扣。
为此可将此表的ValidateEdit代码设置为:
If e.Col.Name = "折扣" Then '如果修改的是折扣列
Dim v As Double = e.Text '取得新输入的折扣
If User.Name = "张经理" Then '如果用户是张经理
If v > 0.15 Then '且折扣大于0.15
e.Cancel = True '取消此次输入
ElseIf v> 0.1 AndAlso e.Row("数量") < 1000 Then '如果折扣大于0.1,但数量少于1000
e.Cancel = True '取消此次输入
End If
ElseIf v > 0.05 Then '如果是普通用户,且折扣大于0.05
e.Cancel = True '取消此次输入
End If
If e.Cancel Then '如果本次输入被取消,则提示用户原因
Messagebox.show("你输入的折扣超出授权范围!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
我们在介绍ValidateEdit和DataColChanging事件的时候,也提供了很多验证输入值的例子,大家可以复习一下。
提问:带背景色部分的内容如何在表格里面就可以修改呢
[此贴子已经被作者于2016/7/23 15:05:46编辑过]