实现为用户分配角色按钮

实现为用户分配角色按钮

1.  添加为用户分配角色按钮

  1. 添加一个div,用来存放按钮跳出的界面

 

  1. 添加一个函数用来把当前点击的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: '为用户分配权限数据',

                 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');

            }

        }
  1. 后端接收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();

        }

 
  1. 添加一个视图界面
@{

    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>
  1. IBll业务层添一个接口
  2. Bll层添加一个方法执行接口
原文地址:https://www.cnblogs.com/wangjinya/p/10886961.html