Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
可视化授权
Foxtable的权限管理非常完善,几乎可以控制每一个细节,大到一个表是否可见,小到一个单元格是否可编辑,都可以精确地控制。
但是很多易表用户,都留恋易表的可视化授权方式。
其实在FoxTable中,我们只需十几行的代码,就可以设计出一个可视化授权管理功能。
首先我们设计一个下图所示的表,名为授权表:
如果不考虑中途切换用户,那么代码可以挪到项目事件AfterOpenProject中,下面的这一段代码可以删除:
For
上面的代码逻辑清晰,原理简单,我相信不用我解释,大家也能明白。
代码是通用的,如果你需要禁止某用户编辑某个表或列,或者禁止某用户查看某个表或列,只需在授权表中加入相应的条目即可。
也就说是,需要禁止某个权限的时候,才需要在授权表加入相应的条目。
例如按照上图的设置,张三看不到表A,不能编辑表B,李四则看不到表B,不能编辑表C,至于王五,比较特殊,他看不到表A的第三列,不能编辑表A的第八列。
实际应用的时候,我们更多的是根据用户分组进行授权,此时只需将授权表的用户名改为分组名,同时将代码改为:
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
如果不考虑中途切换用户,那么下面的这一段代码可以删除:
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
下载信息 [文件大小: 下载次数: ] | |
点击浏览该文件:授权演示.table |
你几分钟,我可能要几天,还说不定要求救于你呢,呵呵
你几分钟,我可能要几天,还说不定要求救于你呢,呵呵
哈哈,哪有这么离谱啊。
一猛人啊 ~~~
以后能不能考虑将一些常用的代码归笼一下?提供给新人参考使用??