以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=6239)

--  作者:sunny_tang6688
--  发布时间:2010/3/19 10:46:00
--  [原创]

我现在做订单管理表,关天权限控制问题,业务员登录订单表后只能看到自己订单信息记录,怎么要去控制?急急.


--  作者:yangming
--  发布时间:2010/3/19 11:05:00
--  

LoadUserSetting

打开系统或者切换用户之后执行,可以在此针对用户进行权限方面的设置。
此事件无e参数,因为通过系统变量User可以直接返回登录用户。

示例

例如只有管理员用户,才能编辑表A,可以在LoadUserSetting事件中加入下面的代码:

If User.Type = UserTypeEnum.Administrator Then
    DataTables
("表A").AllowEdit = True
Else
    DataTables
("表A").AllowEdit = False
End
If

提示:

如果项目没有提供切换用户的功能,那么可以直接在AfterOpenProject事件中设置上述代码。


--  作者:foxor
--  发布时间:2010/3/19 11:10:00
--  
见帮助:只加载业务员为登录用户的订单If e.DataTableName = "订单"
    e.Filter =
"[业务员] = \'" & e.User.Name & "\'"
End
If

在项目事件的beforeloadinnertable中添加上述代码

--  作者:狐狸爸爸
--  发布时间:2010/3/19 11:40:00
--  
用动态加载好一些
--  作者:sunny_tang6688
--  发布时间:2010/3/19 11:48:00
--  
foxor我试了一下你提供了的语句,但是还是不行
我还在LoadUserSetting加了以下语句,是不是有影响?

For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = true
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next
Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("分组名 = \'" & User.Group & "\'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End If
       
    Next
End If

--  作者:blackzhu
--  发布时间:2010/3/19 13:05:00
--  

用loadfilter加载比较好