以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于窗口CANEDIT的分用户识别  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49857)

--  作者:wealthwind
--  发布时间:2014/4/24 23:03:00
--  关于窗口CANEDIT的分用户识别
有一个窗口,有很多个控件,然后有四个角色,分别是“区域主管”、”行销部主管“、”行销部经理“、”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
--  发布时间: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


--  作者:逛逛
--  发布时间:2014/4/25 8:28:00
--  

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

 

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

 

判断的话,遍历

 

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

 

 

当然 User.Roles 为空要判断过


--  作者:lsy
--  发布时间:2014/4/25 8:42:00
--  

权限控制,千变万化。

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

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

 


--  作者:wealthwind
--  发布时间:2014/4/25 9:00:00
--  
很好,这段代码基本可以~~谢谢
--  作者:wealthwind
--  发布时间:2014/4/25 13:14:00
--  
那我应该如何处理,才会显得轻松点??
--  作者:有点甜
--  发布时间:2014/4/25 15:22:00
--  
以下是引用wealthwind在2014-4-25 13:14:00的发言:
那我应该如何处理,才会显得轻松点??

 

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