Foxtable(狐表)用户栏目专家坐堂 → 关于窗口CANEDIT的分用户识别


  共有3671人关注过本帖树形打印复制链接

主题:关于窗口CANEDIT的分用户识别

帅哥哟,离线,有人找我吗?
wealthwind
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
关于窗口CANEDIT的分用户识别  发帖心情 Post By:2014/4/24 23:03:00 [只看该作者]

有一个窗口,有很多个控件,然后有四个角色,分别是“区域主管”、”行销部主管“、”行销部经理“、”BOSS“

我希望达到的效果是,根据不同用户登录,识别该用户可用的控件,其他控件锁死;;如果通过IF代码,达到这样的效果;

我自己编了一段代码,但是实现不了,请老师给予指点;;;;

Dim CanEdit As Boolean = (user.roles = "区域主管")  ' 如果是角色,请改用user.roles
e.Form.Controls("Button5").Enabled = CanEdit 
e.Form.Controls("Button3").Enabled = CanEdit 
e.Form.Controls("Button1").Enabled = CanEdit
e.Form.Controls("Button4").Enabled = CanEdit
e.Form.Controls("textbox4").Enabled = CanEdit

Dim CanEdit As Boolean = (user.roles = "行销部主管")  ' 如果是角色,请改用user.roles
e.Form.Controls("TextBox5").Enabled = CanEdit 
e.Form.Controls("DateTimePicker2").Enabled = CanEdit 
e.Form.Controls("Button6").Enabled = CanEdit 
e.Form.Controls("Button7").Enabled = CanEdit 

Dim CanEdit As Boolean = (user.roles = "行销部经理")  ' 如果是角色,请改用user.roles
e.Form.Controls("TextBox6").Enabled = CanEdit 
e.Form.Controls("DateTimePicker3").Enabled = CanEdit 
e.Form.Controls("Button8").Enabled = CanEdit 
e.Form.Controls("Button9").Enabled = CanEdit 

Dim CanEdit As Boolean = (user.roles = "boss")  ' 如果是角色,请改用user.roles
e.Form.Controls("TextBox2").Enabled = CanEdit 
e.Form.Controls("DateTimePicker1").Enabled = CanEdit 
e.Form.Controls("Button10").Enabled = CanEdit 
e.Form.Controls("Button11").Enabled = CanEdit



如果将以上代码,结合成一个逻辑性的代码???

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/4/25 8:03:00 [只看该作者]

试试:

For Each s As String In "Button1|Button3|Button4|Button5|Button6|Button7|Button8|Button9|Button10|Button11|DateTimePicker1|DateTimePicker2|DateTimePicker3|TextBox1|TextBox2|TextBox3".Split("|")
    e.Form.Controls(s).Enabled = False
Next
For Each s As String In "Button1|Button3|Button4|Button5|TextBox4".Split("|")
    e.Form.Controls(s).Enabled = (User.Roles = "区域主管")
Next

For Each s As String In "Button6|Button7|DateTimePicker2|TextBox5".Split("|")
    e.Form.Controls(s).Enabled = (User.Roles = "行销部主管")
Next

For Each s As String In "Button8|Button9|DateTimePicker3|TextBox6".Split("|")
    e.Form.Controls(s).Enabled = (User.Roles = "行销部经理")
Next

For Each s As String In "Button10|Button11|DateTimePicker1|TextBox2".Split("|")
    e.Form.Controls(s).Enabled = (User.Roles = "boss")
Next


 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2014/4/25 8:28:00 [只看该作者]

如果你的角色是做死的,后面不会变动的话,建议楼主换个一个思路

 

在设计时,控件命名就加上角色名,如Button1 的名称 :Button1_行销部经理

 

判断的话,遍历

 

e.Form.Controls(s).Enabled = s.Contains(User.Roles)

 

 

当然 User.Roles 为空要判断过


 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/4/25 8:42:00 [只看该作者]

权限控制,千变万化。

要做到既轻松,又严密,很难。

反正用代码,这么细致的控制,一是累人,二是缺少灵活性。

 


 回到顶部
帅哥哟,离线,有人找我吗?
wealthwind
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
  发帖心情 Post By:2014/4/25 9:00:00 [只看该作者]

很好,这段代码基本可以~~谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
wealthwind
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:660 积分:3965 威望:0 精华:0 注册:2014/3/16 20:34:00
  发帖心情 Post By:2014/4/25 13:14:00 [只看该作者]

那我应该如何处理,才会显得轻松点??

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/4/25 15:22:00 [只看该作者]

以下是引用wealthwind在2014-4-25 13:14:00的发言:
那我应该如何处理,才会显得轻松点??

 

初学,先把功能实现。等熟悉了再改造。


 回到顶部