SELECT right_id,right_name
FROM rights
WHERE right_id IN (SELECT right_id FROM user_right WHERE user_id = @UserID)

解决方案 »

  1.   

    这样就可以根据用户得到到特定的权限集合,把这个集合填充到TreeView就是了。
      

  2.   

    这样的话是不是就不通过角色来实现了呢?
    另:一个user_id会对应目录树里面的很多菜单,如果通过right_id来记录该用户所有可操作的菜单呢?
      

  3.   

    是不是应该再建一个表专门存储目录树的内容呢?
    例如tree_view表:
    列名 数据类型 描述                长度          主键
    ID Int 节点编号           4                   是
    ParentID Int 父节点编号         4  
    ConText Nvarchar 我们要显示的节点内容      50  
      

  4.   

    http://blogs.coder.cn/athos/articles/598.aspx
      

  5.   

    athossmth(athos)已经说的很清楚了。先把权限组建成权限组,然后分配权限组就是了。同样,每个权限组的成员可以是单个的权限,也可以使一些权限组的组合。
      

  6.   

    用递归实现treeview的权力CRM管理,用另一个表来记录role 和rolefunction
      

  7.   

    if u need.i can send u what i have done
      

  8.   

    那这样就更好了,我的QQ号是344047965
    email:[email protected]
    楼上的可以发给我吗?
      

  9.   

    go msn!
    MSN:[email protected]
      

  10.   

    随便说说。首先数据库的Id用RowId是不合适的,因为RowId跟oracle的内部实现有关,数据库迁移之后可能会有变化。一般的设计定式是使用Number+Sequence来实现。right表没有必要存在。因为right中的值是固定的,没有必要从数据库中读取,从数据库读取不但效率低,而且容易因为数据库被不了解的人更改发生错误。
    就你现在的设计来说,只要实现以下几个类就可以了。
    权限类right
    具有权限Id和权限名称的属性。
    权限集合类rightCollection
    具有Add(权限)Contains(权限)等方法。
    User类
    除了用户名和密码之外,还有一个权限集合类作为它的属性(比如名为Rights)
    几个类完成之后,它的调用方法是这样的
    bool b=userxxx.Rights.Contains(rightxx)
    如果你对集合比较熟,那么这些类可以在几个小时之内完成,如果不熟,正好可以学习一下集合。可以参看帮助中关于CollectionBase,Dictionary的部分。
      

  11.   

    我的思路是:用户登陆后,通过SQL结合用户表、用户权限表、模块表和模块功能表从数据库中查出用户当前权限下可以操作的窗口并设置其可操作功能(添加、删除和修改等按钮或者菜单)。
      

  12.   

    oracle的RowId是跟oracle的物理存储位置有关的,不宜用作主码。因为物理存储位置可能会改变。
      

  13.   

    实现前面的类以后,再做一个类提供目录树的数据,这个类将User作为构造函数的参数,思路清晰了,其余的工作就不难了。
      

  14.   

    建议看看windows的权限或者AD的权限。