以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于使用者的权限  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=72834)

--  作者:wymoonwalker
--  发布时间:2015/8/7 10:05:00
--  关于使用者的权限
请教专家,我有一个项目,由不同的人编辑并对他们设置了权限只能看见自己录入的行,其中表中“图片”列是图片列,上传资料用。
现在增加了一个“过路者”用户,只能浏览不能做任何修改。但是现在想对“图片”列中已上传的资料可以下载。
请问代码该如何修改?
If User.Name = "过路者" Then
    For Each t As Table In Tables
        t.AllowEdit = False
    Next
End If

--  作者:大红袍
--  发布时间:2015/8/7 10:11:00
--  

 ftp列的权限不好控制。

 

 你单独做一个浏览图片和下载图片的窗口吧,加入PictureViewer控件,控制其按钮的显示即可。

 

 http://www.foxtable.com/help/topics/2286.htm

 


--  作者:wymoonwalker
--  发布时间:2015/8/7 10:20:00
--  
太难了。我不做ftp列具体的权限控制了。这个过路者用户可以编辑(删除或下载或上传)ftp列,只是无法编辑其他所有列的内容呢?



--  作者:大红袍
--  发布时间:2015/8/7 10:27:00
--  

1、AfterOpenProject事件

 

For Each dt As DataTable In DataTables
    dt.GlobalHandler.PrepareEdit = True
Next

 

2、全局表事件,PrepareEdit

 

http://www.foxtable.com/help/topics/0671.htm

 

If User.Name = "过路者" Then
    If e.Col.DataCol.ExtendType <> ExtendTypeEnum.Files AndAlso e.Col.DataCol.ExtendType <> ExtendTypeEnum.Images Then
        e.cancel = True
    End If   
End If

 

[此贴子已经被作者于2015/8/7 10:26:56编辑过]

--  作者:wymoonwalker
--  发布时间:2015/8/7 14:00:00
--  
谢谢红袍!
代码试验后可以应用但发现一个问题。
因我这个项目有多个表,而只有这一个表A有图片列需要编辑,其他表用"过路者"登陆后都是锁定状态。项目过路者用户登陆后,首先是一个登陆图片,此时直接点击表A,那么图片列可编辑。点击其他表,显示锁定状态。再点击表A,依然是全表锁定状态,全部列都不能编辑。
此时切换其他用户,也同样是项目全部表锁定状态。除非关掉重新登录,才正常。
这种现象是否正常?

--  作者:大红袍
--  发布时间:2015/8/7 14:06:00
--  
1楼的代码,你要去掉才行
--  作者:大红袍
--  发布时间:2015/8/7 14:07:00
--  

如果只有一个表需要,就在那个表的PrepareEdit写代码即可。不需要开启全局表事件。

 

If User.Name = "过路者" Then
    If e.Col.Name = "图片" Then
        e.cancel = True
    End If   
End If

 

[此贴子已经被作者于2015/8/7 14:07:07编辑过]

--  作者:wymoonwalker
--  发布时间:2015/8/7 14:31:00
--  
如果去掉一楼的代码,其他表的锁定设置是否需要在每个表的表属性中重新编码?


--  作者:大红袍
--  发布时间:2015/8/7 14:33:00
--  

单独解锁一个表

 

If User.Name = "过路者" Then
    For Each t As Table In Tables
        If t.Name <> "表A" Then
            t.AllowEdit = False
        End If
    Next
End If