以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 审批后录入窗口依然能编辑的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=113687) |
-- 作者:joechenjw -- 发布时间:2018/1/21 4:03:00 -- 审批后录入窗口依然能编辑的问题 审批后表不能编辑了,但是录入窗口仍然可以编辑,并且编辑内容可以注入表。怎么才能在录入窗口也禁止编辑呢? |
-- 作者:有点甜 -- 发布时间:2018/1/21 22:36:00 -- 参考
http://www.foxtable.com/webhelp/scr/2342.htm
|
-- 作者:joechenjw -- 发布时间:2018/1/21 23:51:00 -- 在表中可以实现“如果审批人列不为空则禁止编辑”,但是不能阻止通过录入窗口修改数据,所以需要在窗口中实现“如果审批人列不为空则禁止编辑”。文档我看过了,只是针对不同用户修改不同列,依然不能解决这个问题。我也参考表的代码在窗口全局事件中写了代码,但是依然无法禁止编辑。希望可以提供代码参考,谢谢! |
-- 作者:有点甜 -- 发布时间:2018/1/21 23:59:00 -- 1、你可以直接把某一行锁定;
2、文档的条件你可以修改成自己的逻辑啊。不会做上传实例。 |
-- 作者:joechenjw -- 发布时间:2018/1/24 19:15:00 -- 表事件PrepareEdit的代码设置为: If e.Row.IsNull("审核人") = False Then \'如果审批人列不为空 e.Cancel = True \'则禁止编辑 End If 这样经过审批的行,将不能编辑。 前面所有有关编辑的权限设置,都是针对数据表的。如果采用录入窗口编辑数据,那么这些权限设置是无效的,我们需要另外的方法。 在窗口的全局事件的Enter事件中设置代码: Dim ctl As WinForm.Control = e.Sender Dim tex1 As WinForm.TextBox tex1 = e.Form.Controls("TextBox33") Select Case ctl.BindingField Case "立项.服务分包成本" If tex1.Text = Nothing Then \'如果审批人列为空 ctl.ReadOnly = BooleanEnum.False \'允许编辑 Else ctl.ReadOnly = BooleanEnum.True \'禁止编辑 End If End Select 这样只能限制录入窗口某个文本框禁止编辑,但是我的窗口文本框很多我不能逐个去设,希望可以直接整个窗口都禁止编辑,能否做到?
|
-- 作者:有点甜 -- 发布时间:2018/1/24 19:27:00 -- 改成这样
Dim r As Row = Tables("表A").Current |
-- 作者:joechenjw -- 发布时间:2018/2/1 13:15:00 -- 按照您的代码问题解决,非常感谢! |