实现为用户分配角色按钮
实现为用户分配角色按钮
1. 添加为用户分配角色按钮
- 添加一个div,用来存放按钮跳出的界面
- 添加一个函数用来把当前点击的id值发送给后端。
//为用户分配权限函数 function showSetUserActionInfo() { //判断一下用户是否选择了要修改的数据 var rows = $('#tt').datagrid('getSelections');//获取所选择的行 if (rows.length != 1) { $.messager.alert("提示", "请选择要分配权限的用户", "error"); return; } //设置添加src属性,将id的值通过get的形式发送给ShowUserAction方法 $("#setUserActionFrame").attr("src", "/UserInfo/ShowUserAction/?userId=" + rows[0].ID); //发送之后将div显示出来 $("#setUsrActionDiv").css("display", "block"); //展示将要显示的数据 $('#setUsrActionDiv').dialog({ title: '为用户分配权限数据', width: 400, height: 300, collapsible: true, maximizable: true, resizable: true, modal: true, buttons: [{ text: 'Ok', //确定按钮 iconCls: 'icon-ok', handler: function () { } }, { text: 'Cancel', //取消按钮 handler: function () { $('#setUsrActionDiv').dialog('close'); } }] }); }
3.5 在父窗体中添加一个关闭当前窗体的方法,是为子窗体写的方法
//为用户分配完成角色以后调用的方法。 并且是由子窗体调用 function afterSetUserRole(data) { if (data == "ok") { $('#setUsrRoleDiv').dialog('close'); } }
- 后端接收id的值,并且根据id的值查询出当前用户的信息与当前用户的角色信息,还有所有的角色的信息
public ActionResult ShowUserRoleInfo() { //接受id的属性的值 int id = int.Parse(Request["id"]); //查询id为上方的数据 var userInfo = UserInfoService.LoadEntities(u => u.ID == id).FirstOrDefault(); ViewBag.UserInfo = userInfo; //通过该方法把数据返回到前端,相当于ViewDate //查询所有的角色. short delFlag = (short)DeleteEnumType.Normarl; // delFlag=0 var allRoleList = RoleInfoService.LoadEntities(r => r.DelFlag == delFlag).ToList(); //查询一下要分配角色的用户以前具有了哪些角色编号。 var allUserRoleIdList = (from r in userInfo.RoleInfo select r.ID).ToList(); ViewBag.AllRoleList = allRoleList; //通过该方法把数据返回到前端,相当于ViewDate ViewBag.AllUserRoleIdList = allUserRoleIdList; return View(); }
- 添加一个视图界面
@{ Layout = null; } @using Model <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>为用户分配角色</title> <script src="~/Scripts/jquery-ui-1.8.24.min.js"></script> <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> <script type="text/javascript"> function subForm() { $("#setUserRoleForm").submit(); } function afterSet(data) { window.parent.afterSetUserRole(data); } </script> </head> <body> <div> 为 @{ UserInfo userInfo = ViewBag.UserInfo; <span style="font-size:14px;color:red;font-weight:bold"> @userInfo.UName</span> } 用户分配角色<br /> @{ using (Ajax.BeginForm("SetUserRoleInfo", "UserInfo", new { }, new AjaxOptions() { OnSuccess = "afterSet", HttpMethod = "post" }, new { id = "setUserRoleForm" })) { <input type="hidden" name="userId" value="@userInfo.ID" /> List<RoleInfo> allRoleList = ViewBag.AllRoleList; //全部的角色信息 List<int> roleIdList = ViewBag.AllUserRoleIdList; //该角色已经有的角色信息 foreach (RoleInfo roleInfo in allRoleList) { //便利全部的角色信息 var roleName = "cba_" + roleInfo.ID; if (roleIdList.Contains(roleInfo.ID)) //如果有这个角色信息 { //设置勾选 checked="checked" <input type="checkbox" name="@roleName" value="@roleInfo.ID" checked="checked" />@roleInfo.RoleName } else { <input type="checkbox" name="@roleName" value="@roleInfo.ID" />@roleInfo.RoleName } } } } </div> </body> </html>
- IBll业务层添一个接口
- Bll层添加一个方法执行接口