日期:2014-05-18  浏览次数:20611 次

我想破头的问题请大家帮忙解决下!
现有  
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>
最后绑定上就成了