|
Доступ к контролам на клиенте
|
|||
---|---|---|---|
#18+
Скажите пожалуйста, как организовать доступ к контролам на форме в зависимости от роли пользователя? Контролы разные. Ролей всего две, но это не важно... Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 09:57 |
|
Доступ к контролам на клиенте
|
|||
---|---|---|---|
#18+
если тупо в лоб, то что-то типа: роли 2 - значит Enm. public enum_rigth as enum роль_№1 = 1 роль_№2 = 2 end enum и в процедуре формы Load прописать типа: if роль=enum_rigth.роль_№1 then имя_контрола1.Visible=false elseif роль=enum.роль_№2 then имя_контрола2.Visible=false ebdif ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 23:05 |
|
Доступ к контролам на клиенте
|
|||
---|---|---|---|
#18+
_=ДОБРЫНЯ=_, ну это уж совсем грубо Привязать свойства Visible и Enabled куда-нибудь, это хоть протестировать можно будет. Можно так поизвращаться, например Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 01:01 |
|
Доступ к контролам на клиенте
|
|||
---|---|---|---|
#18+
vahСкажите пожалуйста, как организовать доступ к контролам на форме в зависимости от роли пользователя? Контролы разные. Ролей всего две, но это не важно... Заранее благодарен. Не зная целиком задачи - в вашем случае сделал бы базовую форму,в которой при Load запускался бы модуль безопасности, который посредством Reflection (можно и через Controls) получал все контролы на форме - далее бы выдавал им Visible, или Enabled в соответствии с настройками текущей роли пользователя. Тут уже можно хоть сколько ролей делать. Тебе еще нужно эти настройки доступа где-то хранить - в базе к примеру, если таковая имеется. Так же модуль безопасности должен уметь просканировать все формы приложения и добавлять новые контролы, которых нет в настройках (при разработке новых форм, чтобы ты руками ничего в хранимые настройки не скидывал). Привязываться можно к Form.Name + Control.Name, с оговоркой в будущем не менять имя контролов, или менять и знать что в сохраненных настройках надо будет обновить Control.Name ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 12:22 |
|
Доступ к контролам на клиенте
|
|||
---|---|---|---|
#18+
LameUservahСкажите пожалуйста, как организовать доступ к контролам на форме в зависимости от роли пользователя? Контролы разные. Ролей всего две, но это не важно... Заранее благодарен. Не зная целиком задачи - в вашем случае сделал бы базовую форму,в которой при Load запускался бы модуль безопасности, который посредством Reflection (можно и через Controls) получал все контролы на форме - далее бы выдавал им Visible, или Enabled в соответствии с настройками текущей роли пользователя. Тут уже можно хоть сколько ролей делать. Тебе еще нужно эти настройки доступа где-то хранить - в базе к примеру, если таковая имеется. Так же модуль безопасности должен уметь просканировать все формы приложения и добавлять новые контролы, которых нет в настройках (при разработке новых форм, чтобы ты руками ничего в хранимые настройки не скидывал). Привязываться можно к Form.Name + Control.Name, с оговоркой в будущем не менять имя контролов, или менять и знать что в сохраненных настройках надо будет обновить Control.Name Поддерживаю, но я бы сделал чуть иначе. сканировать все контролы - затратно по времени при загрузке формы, если к примеру контролов более 100 и они все разбросаны по вкладкам или контейнерам. Лучше хранить в базе те контролы которые нужно блокировать или скрыть. В load формы через Controls.Find() искать именно те которые нужно блокернуть. Ну а если изменили название - то это на совести разработчика. Значит ему придется по новой указывать на этот контрол блокировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 11:03 |
|
Доступ к контролам на клиенте
|
|||
---|---|---|---|
#18+
_=ДОБРЫНЯ=_Поддерживаю, но я бы сделал чуть иначе. сканировать все контролы - затратно по времени при загрузке формы, если к примеру контролов более 100 и они все разбросаны по вкладкам или контейнерам. Лучше хранить в базе те контролы которые нужно блокировать или скрыть. В load формы через Controls.Find() искать именно те которые нужно блокернуть. Ну а если изменили название - то это на совести разработчика. Значит ему придется по новой указывать на этот контрол блокировку. обращение к базе намного затратнее сканирования всех контролов, особенно если речь идет не десктопе ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 12:02 |
|
Доступ к контролам на клиенте
|
|||
---|---|---|---|
#18+
pation_=ДОБРЫНЯ=_Поддерживаю, но я бы сделал чуть иначе. сканировать все контролы - затратно по времени при загрузке формы, если к примеру контролов более 100 и они все разбросаны по вкладкам или контейнерам. Лучше хранить в базе те контролы которые нужно блокировать или скрыть. В load формы через Controls.Find() искать именно те которые нужно блокернуть. Ну а если изменили название - то это на совести разработчика. Значит ему придется по новой указывать на этот контрол блокировку. обращение к базе намного затратнее сканирования всех контролов, особенно если речь идет не десктопе Зная имя формы - обращение происходит один раз. По вернувшемуся результату быстро пробегаем и ищем контрол. если нашли, то из этого же вырнувшегося результата смотрим и устанавливаем поведение контрола. Хочу так же добавить - если к примеру какое-то поведение контрола уже не нужно - то удаляем эту строчку физически из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2013, 12:45 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1405196]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 8ms |
total: | 143ms |
0 / 0 |