jsTree简单使用说明(适用于做权限)

   <div id="using_json"></div>
<input type="button" value="保存权限" class="btn btn-primary" id="saveper"/>
    <script type="text/javascript">
        $(document).ready(function() {

            $(‘#using_json‘).jstree({
                "plugins": ["checkbox"],
                ‘checkbox‘: { "keep_selected_style": false, "tie_selection": true },
                ‘core‘: {
                    "multiple": true,
                    "animation": 0,
                    ‘data‘: @Html.Raw(ViewBag.aaa.ToString())

                }

            });

            $("#saveper").click(function() {
                var ouList = $(‘#using_json‘).jstree(‘get_selected‘);

                $.ajax({
                    type: ‘POST‘,
                    url: "/Role/DistributionPer",
                    dataType: ‘json‘,
                    data: { "idlist": ouList.toString(), "roleId": @ViewBag.Id },
                    success: function(data) {
                        AjaxCallBack(data);
                    }
                });

            });

        });
    </script>

树形结构MODEL

    public class PerTreeView
    {
        public string text { get; set; }
        public string id { get; set; }
        public string icon { get; set; }
        public List<PerTreeView> children { get; set; }

        public State state { get; set; }
    }

权限树形结构初始化控制器

        public ActionResult DistributionPer(int id)
        {
            ViewBag.Id = id;
            var perIdList = APIClient.AdminService.GetNodeIdListByRoleId(id);
            var a=GetPerTreeView(Permission.Where(s => s.Level != 0).ToList(), Permission, perIdList.Value.ToList());
            var js=new JavaScriptSerializer();
            ViewBag.aaa=js.Serialize(a);
            return View();
        }

初始化JSON方法state=true时表示选中

    private List<PerTreeView> GetPerTreeView(List<Permission> permission, List<Permission> permissionAll,List<int> idlist)
        {
            var treeViewList=new List<PerTreeView>();

            foreach (var item in permission)
            {
                var treeView = new PerTreeView {text = item.Name,id = item.Id.ToString()};

                if (permissionAll.Count(s => s.ParentId == item.Id) <= 0)
                {

                    treeView.icon = "";

                        if (idlist.Contains(item.Id))
                    {
                        treeView.state = new State()
                        {
                            selected = "true"

                        };
                    }

                }
                else
                {

                    treeView.children = GetPerTreeView(permissionAll.Where(s => s.ParentId == item.Id).ToList(), permissionAll, idlist);
                }
                treeViewList.Add(treeView);
            }
            return treeViewList;
        }

更新权限控制器

        [HttpPost]

        public JsonResult DistributionPer(int roleId, string idlist)
        {
            if (string.IsNullOrWhiteSpace(idlist))
            {
                return Json(new AjaxViewModel()
                {
                    Code = AjaxCode.Error,
                    Msg = "未选择权限"
                });
            }

            var listId = idlist.Split(‘,‘).Select(item => item.ConvertToInt32()).ToList();
            //排除之选一个的情况
            if (listId.Count() <= 1)
            {
                return Json(new AjaxViewModel()
                {
                    Code = AjaxCode.Error,
                    Msg = "未选择权限"
                });
            }
            var parIdList= listId.Select(item =>
            {
                var firstOrDefault = Permission.FirstOrDefault(s => s.Id == item);
                return firstOrDefault?.ParentId ?? 0;
            }).ToList();
            listId.AddRange(parIdList.Distinct());

            var obj=APIClient.AdminService.UpdateRule(roleId, listId.ToArray());
            if (obj.Code != 200)
            {
                return Json(new AjaxViewModel()
                {
                    Code = AjaxCode.Error,
                    Msg = "服务器内部错误"
                });
            }
            return Json(new AjaxViewModel()
            {
                Code = AjaxCode.Ok,
                Msg = "修改完成",
                ReturnUrl = "/role/index"
            });

        }
时间: 2024-10-12 20:04:14

jsTree简单使用说明(适用于做权限)的相关文章

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求为一个具体的功能页面 /// </summary> public class AdminActionMethod : Attribute { /// <summary> /// 页面请求路径 /// </summary> public string ActionUrl {

Spring依赖注入 --- 简单使用说明

Spring依赖注入 --- 简单使用说明 本文将对spring依赖注入的使用做简单的说明,enjoy your time! 1.使用Spring提供的依赖注入 对spring依赖注入的实现方法感兴趣的同学可以参考我的日志:http://www.cnblogs.com/kodoyang/p/Frame_Imitate_Spring.html 我们会用spring提供的ClassPathXmlApplicationContext实现来代替这篇日志中相应的实现 为导入的jar文件配置api 对应的L

2.4.4.3、Django用user表last_name字段做权限控制

这不是最好的方法! 数据库User表中因为是系统初始化的表,如果添加额外的字段需要修改django源文件,不利于移植,为避免带来其他问题,可以使用last_name字段做为权限控制,当然也可以用profile方法为user表添加新字段(对于user表示一对一关系,但不是在User表中),session在用户登录之后会一直存储user的信息,所以用user表中的字段在html中引用实现更简单一点(group可以在视图里使用) 如下图: 在http://10.1.1.145:8000/admin/a

Source Insight 项目简单使用说明

SI(Source Insight) 是我一直写代码的好伙伴, 相信这强大的软件也是广大程序员编写软件的利器. 正所谓" 工欲善其事, 必先利其器", 我们要学会利用这款软件. 先介绍一下它几个强大的功能: 自动补全, 快速跳转, 关系图. 项目创建 1.  菜单栏"Project"-> "New Project" (或直接Alt+Shift+N). 2.  输入项目名称和SI项目数据存放地址.(存放位置看个人, 我习惯在项目代码顶层建立S

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是翔通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基本不用了.还有最主要的原因就是锻炼下自己的能力.好了其他就不多说了,下面来看下我对这个项目的整体概述吧: 目录: 目录我以后会在这边添加上去的 一.Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理 基本设计 项目中使用到的工具: Visual Studio 2013,

使用before_request来做权限和用户检查

因为使用restful方式,因此每次用户访问都会上传带入auth_key,如jwt等,因此可在@app.before_request中做权限的检查. @app.app.before_request def before_request(): #可在此处检查jwt等auth_key是否合法, #abort(401) #然后根据endpoint,检查此api是否有权限,需要自行处理 #print(["endpoint",connexion.request.url_rule.endpoint

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6

接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace AuthorDesign.Web.Areas.Admin.Controllers { public class Role

用spring security实现简单的登陆和权限角色控制

 随笔简介 spring版本:4.3.2.RELEASE+spring security 版本:4.1.2.RELEASE(其它不做说明) 所展示内容全部用注解配置 springmvc已经配置好,不作说明 会涉及到springmvc,spel,el的东西,不熟悉的同学可以先去看一下这方面内容,特别是springmvc 首先想一下,登陆需要什么,最简单的情况下,用户名,密码,然后比对数据库,如果吻合就跳转到个人页面,否则回到登陆页面,并且提示用户名密码错误.这个过程中应该还带有权限角色,并且贯穿整

BIEE 11g外部表做权限认证

1.数据库中创建用户表BIEE_AUTH: create table BIEE_AUTH ( USERID VARCHAR2(20), USERNAME VARCHAR2(20), USERPWD VARCHAR2(20), USERROLE VARCHAR2(100) ); 这里注意,用户有多个角色时,用";"分开:USERROLE这个字段,如果用户角色较多,字段大小需按实际设定:如果想把数据权限都放在一个表里弄的话,估计表要重新设计,这个只是简单测试用.存的数据如下: 2.RPD创