Foxtable(狐表)用户栏目专家坐堂 → 审批后录入窗口依然能编辑的问题


  共有2414人关注过本帖树形打印复制链接

主题:审批后录入窗口依然能编辑的问题

帅哥哟,离线,有人找我吗?
joechenjw
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:4 积分:115 威望:0 精华:0 注册:2018/1/21 3:33:00
审批后录入窗口依然能编辑的问题  发帖心情 Post By:2018/1/21 4:03:00 [显示全部帖子]

审批后表不能编辑了,但是录入窗口仍然可以编辑,并且编辑内容可以注入表。怎么才能在录入窗口也禁止编辑呢?

 回到顶部
帅哥哟,离线,有人找我吗?
joechenjw
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:4 积分:115 威望:0 精华:0 注册:2018/1/21 3:33:00
  发帖心情 Post By:2018/1/21 23:51:00 [显示全部帖子]

在表中可以实现“如果审批人列不为空则禁止编辑”,但是不能阻止通过录入窗口修改数据,所以需要在窗口中实现“如果审批人列不为空则禁止编辑”。文档我看过了,只是针对不同用户修改不同列,依然不能解决这个问题。我也参考表的代码在窗口全局事件中写了代码,但是依然无法禁止编辑。希望可以提供代码参考,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
joechenjw
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:4 积分:115 威望:0 精华:0 注册:2018/1/21 3:33:00
  发帖心情 Post By: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

这样只能限制录入窗口某个文本框禁止编辑,但是我的窗口文本框很多我不能逐个去设,希望可以直接整个窗口都禁止编辑,能否做到?

 回到顶部
帅哥哟,离线,有人找我吗?
joechenjw
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:4 积分:115 威望:0 精华:0 注册:2018/1/21 3:33:00
  发帖心情 Post By:2018/2/1 13:15:00 [显示全部帖子]

按照您的代码问题解决,非常感谢!

 回到顶部