以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  权限设置问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=7197)

--  作者:实话实说
--  发布时间:2010/5/24 22:07:00
--  权限设置问题

权限设置不起作用,不知问题在哪。开发者密码:58011700

项目属性LoadUserSetting事件

Tables("权限表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("权限表").Select("用户名 = \'" & User.Name & "\'" )
        \'Tables(dr("表名")).Visible = Not dr("不可见")
        Tables(dr("表名")).AllowEdit = Not dr("不能编辑")
    Next
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:123.rar


--  作者:狐狸爸爸
--  发布时间:2010/5/24 22:50:00
--  

代码没有错,你可以在命令窗口执行下面的代码验证:

 

If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("权限表").Select("用户名 = \'" & User.Name & "\'" )
        Tables(dr("表名")).AllowEdit = Not dr("不能编辑")
        output.show(dr("表名") & ":" & Tables(dr("表名")).AllowEdit)
    Next
End If

你的代码只是设置了打开项目后,表是否能能编辑。

但是之后表的编辑状态是可以改变的,例如你在窗口中插入了一个Table控件,但是这个Table控件的允许编辑属性设置为了True,那么打开窗口后,这个Table就能够编辑,不管它之前是否能编辑。

你的MainTable事件中设置了代码用于打开窗口,而这些窗口中的Table的允许编辑属性都设置为了True,所以这些Table都是能编辑的,

[此贴子已经被作者于2010-5-24 22:52:55编辑过]

--  作者:实话实说
--  发布时间:2010/5/24 23:15:00
--  
再看看这个系统的权限设置,方法几乎一样,这个系统的权限就正常,窗口中的表也可编辑。密码相同
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:456.rar


--  作者:狐狸爸爸
--  发布时间:2010/5/24 23:19:00
--  
原因我告诉你了,自己分析吧
--  作者:狐狸爸爸
--  发布时间:2010/5/24 23:25:00
--  

提醒一下:

 

123.rar这个项目,窗口的自动打开属性是False,456.rar这个项目的自动打开属性为True

 

这就是他们的差别,前者执行LoadUserSetting,再打开的窗口(MainTableChanged事件),后者一开始就打开了窗口,再执行LoadUserSetting,尽管MaintableChanged也设置了打开窗口的代码,但是由于窗口已经打开,所以无效。


--  作者:实话实说
--  发布时间:2010/5/24 23:38:00
--  
是这样,谢谢。