以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]列的权限问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=96420)

--  作者:紫色幽魂
--  发布时间:2017/2/20 16:23:00
--  [求助]列的权限问题
请教下,一个表我只希望某个组的人只能编辑这几列,别的列不能编辑,我这样写为什么不行,用窗口加载一个table表的话权限是不是要另外写,是写在哪个事件呢
Dim lms() As String = {"费用_试样加工费","试验_检测日期"}
Dim l As DataCol
If User.Group <> "理化" AndAlso User.Type <> UserTypeEnum.Developer Then
    For Each lm As String In lms
        If l.Name = lm Then
            e.Cancel = True
        Else
            e.Cancel = False
        End If
    Next
End If

--  作者:有点蓝
--  发布时间:2017/2/20 18:02:00
--  
如果是主表和副本,直接使用这个代码没有问题。如果是sqltable,在窗口表事件中写
--  作者:紫色幽魂
--  发布时间:2017/2/20 18:06:00
--  回复:(有点蓝)如果是主表和副本,直接使用这个代码...
但是我在表里面写在PrepareEdit事件后都不能编辑了,这两个列外的也没有列外了
--  作者:有点色
--  发布时间:2017/2/20 18:11:00
--  
Dim lms() As String = {"费用_试样加工费","试验_检测日期"}
If User.Group <> "理化" AndAlso User.Type <> UserTypeEnum.Developer Then
    If array.IndexOf(lms, e.col.Name) >= 0 Then
        e.Cancel = false
    else
        e.Cancel = true
    End If
End If

--  作者:紫色幽魂
--  发布时间:2017/2/21 11:03:00
--  回复:(有点色)Dim lms() As String = {"费用_试样...
还是可以编辑,没有限制,加上msgbox调试也没有反应
--  作者:有点蓝
--  发布时间:2017/2/21 11:26:00
--  
msgbox(User.Group)
msgbox(User.Type.ToString())

弹出看看用户的信息

--  作者:紫色幽魂
--  发布时间:2017/2/21 11:31:00
--  回复:(有点蓝)msgbox(User.Group)msgbox(User.Type...
用的是开发者账号登录的,开发者没有分组,所以第一个是空的,第二个弹出Developer
--  作者:有点蓝
--  发布时间:2017/2/21 11:40:00
--  
你的逻辑有点看不懂:是“理化”的才可以编辑,还是,不是“理化”的才可以编辑,开发者能不能编辑?
--  作者:紫色幽魂
--  发布时间:2017/2/21 11:44:00
--  回复:(有点蓝)你的逻辑有点看不懂:是“理化”的才...
我想的是如果分组是理化,就只能编辑这两列,别的不能编辑,但是我想开发者可以编辑全部的,所以就把开发者也加进去了,但是这样好像不对,后面再改,主要是理化只能编辑这两列,开发者现在加进去只是为了在不切换用户的时候进行测试
--  作者:有点蓝
--  发布时间:2017/2/21 12:03:00
--  
Select Case e.Col.Name
    Case "费用_试样加工费","试验_检测日期"
    Case Else
        If User.Group = "理化" AndAlso User.Type <> UserTypeEnum.Developer Then
            e.Cancel = True
        End If
End Select