DataRowLockedChanging

行的锁定状态改变前执行,可以在此处进行权限和逻辑验证,决定是否允许锁定或取消锁定此行。

e参数属性: 

DataTable:返回要锁定行的数据表。
DataRow:  返回要锁定的数据行。
Cancel:    逻辑型,设为True,取消即将进行的锁定行操作。

你也许会奇怪,怎么知道进行的操作是锁定行还是取消锁定行? 其实很简单,如果行的当前状态是锁定,那么进行的就是取消锁定行操作,否则就是锁定行。

示例一

假定只允许经理级别的用户改变行的锁定状态,可以设置DataRowLockedChanging事件代码为:

If User.Group <> "经理" Then
    e.Cancel =
True
End
If

示例二

假定有个表,要求:

1、只有已经审核通过的行,才能锁定。
2、对于已经审核通过并锁定的行,只有经理才能解锁。

要达到上述目的,可以设置DataRowLockedChanging事件代码为:

If e.DataRow("审核") = False Then  '未审核通过的行

    If e.DataRow.Locked  = False Then '如果此行目前未锁定,也就是准备锁定此行

        Messagebox.show("不能锁定未审核通过的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

        e.Cancel = True

    End If

ElseIf e.DataRow("审核") = True Then '已经审核通过的行

   If e.DataRow.Locked  = True Then '如果此行已锁定,也就是准备取消锁定此行

        If User.Group <> "经理" Then

            Messagebox.show("只有经理才能解锁已经审核通过的行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)

            e.Cancel = True

        End If

    End If

End If


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