我想破头的问题请大家帮忙解决下!
现有
T_role_user 表有字段 userid ,roleid 保存用户和角色的对应.一个用户可能对应多个角色
T_role 表 字段有roleid,rolename 保存 角色编号和 角色名称
T_group 表 字段有groupid,groupname 保存 分组编号和分组名称
T_group_user 表有字段 userid ,groupid 保存用户和分组的对应.一个用户可能对应多个组
T_user 表 保存用户信息 字段主要就是 userid
现在我如何才能做到
用户名 角色名 分组名
张三 总经理,经理,组长 财务,市场,支持
象上面那样全部显示出来。并且里面的那些角色和分组是用checkbox一样来显示.用户拥有这个角色或者在这个分组.该角色对应的checkbox就选中
请大家帮忙!!谢谢了!!
------解决方案---------------------- e.g.Role
-- sql for MS SQL Server
--
SELECT RoleID, RoleName, CASE WHEN ru.UserID IS NULL THEN 0 ELSE 1 END IsInRole FROM T_Role r
LEFT OUTER JOIN T_role_user ru
ON r.RoleID = ru.RoleID AND ru.UserID = @UserID
// .aspx 往 DataList 嵌入 CheckBox 便于直接绑定
<asp:Datalist repeatcolumns=1 ...
<itemtemplate>
<asp:checkbox text= ' <%# Eval( "RoleName ") %> ' cheched= ' <%# Eval( "IsInRole ") %> ' ...
...
------解决方案--------------------select username,(select roleid from role where user.userid=role.userid),(select groupid from group where group.userid=user.userid) from user
------解决方案--------------------先取出,数据库里的所有用户组,角色等,绑定到CheckBoxList,然后取出用户里面的用户组id,角色ID,相匹配的就选中。
------解决方案--------------------其实不是很难的问题 就是有点复杂
先用SQL把 用户查出来 放在一Table1里 再用一SQL 把角色查出来 放在一Table2里
再用SQL把 组查出来 放在一Table3里
把数据查出后 用表1滤表2 表3 然后拼到一个表里
再用一TABLE 拼串 加上<checkbox id= " " runat= " "></checkbox>
最后绑定上就成了