easyui-tree根据叶子节点获取父节点值(N层)

97 篇文章 1 订阅
76 篇文章 1 订阅

easyui-tree根据叶子节点获取父节点值(N层)

思路:将叶子节点的id值用字符串拼接,如:叶子节点id=“根节点id-父节点id-叶子节点id”,用“-”间隔来取值。

easyui-tree根据叶子节点获取父节点值(N层)

html:

<div class="easyui-panel" style="padding:5px;height: 840px;">
                    <ul id="myTree" class="easyui-tree"></ul>
                </div>

easyui-tree根据叶子节点获取父节点值(N层)

jQuery:

            <script type="text/javascript">
                //加载tree
                function LoadTree() {        
                    $.ajax({
                        type: "GET",
                        url: "/Rights/Job/GetTreeJson",
                        success: function (result) {
                            var myJson = eval('(' + result + ')');
                            $("#myTree").tree({
                                data: myJson,
                                onlyLeafCheck: false,//仅叶子节点可以被选中
                                checkbox: false,//开启多选框
                            });
                        }
                    });
                }
                //初始化
                $(function () {
                    LoadTree();
                });       
                //点击左侧列表
                $(function () {
                    $("#DataGrid").datagrid({
                        onClickRow: function (index, row) {
                            //var JobID = row.JobID;
                            if ($("#divTabs").tabs("exists", "范围设置")) {
                                $("#divTabs").tabs("select", "范围设置");
                            }
                            CheckTree();
                        }
                    });
                });
                //tree编辑的按钮
                $(function () {
                    $("#btn_FW_Edit").click(function () {
                        var rows = $("#DataGrid").datagrid("getSelections");
                        if (rows.length != 1) {
                            alert("请左边列表中选择一个[岗位]!");
                            return;
                        } else {
                            CheckTree();
                        }
                    });
                });
                function CheckTree() {
                    $("#div_FW_Edit").hide();
                    $("#div_FW_Save").show();
                    $("#myTree").tree({
                        //onlyLeafCheck: true,//仅叶子节点可以被选中
                        checkbox: true,//开启多选框
                    });
                    //先将回显数据全部清除
                    var root = $("#myTree").tree("getRoot");
                    $("#myTree").tree("uncheck", root.target);
                    var rows = $("#DataGrid").datagrid("getSelections");
                    var id = rows[0].JobID;
                    $.ajax({
                        url: "/Rights/JobViewRange/BindTree",
                        data: {
                            JobID: id,
                        },
                        success: function (data) {
                            for (x in data) {
                                var node = $("#myTree").tree("find", data[x].RangeValue);
                                $("#myTree").tree("check", node.target);
                            }
                        }
                    });
                }
                //保存勾选的tree
                $(function () {
                    $("#btn_FW_Save").click(
                        function () {
                            var rows = $("#DataGrid").datagrid("getSelections");
                            if (rows.length != 1) {
                                alert("请左边列表中选择一个[岗位]!");
                                return;
                            } else {
                                var id = rows[0].JobID;
                                var BrandID = rows[0].BrandID;
                                //tree选中项目:
                                var nodes = $("#myTree").tree("getChecked");
                                var res_id = '';
                                for (var i = 0; i < nodes.length; i++) {
                                    if (res_id != '') res_id += ',';
                                    res_id += nodes[i].id;
                                }
                                if (res_id == '') {
                                    alert("请选择[范围值]!");
                                    return;
                                }
                                //alert(res_id);
                                $.ajax({
                                    type: "POST",
                                    url: "/Rights/JobViewRange/SaveTree",
                                    data: {
                                        JobID: id,
                                        RangeValue: res_id,
                                        BrandID: BrandID,
                                    },
                                    success: function (data) {
                                        if (data == "OK") {
                                            alert("修改成功!");
                                            LoadTree();
                                            //document.getElementById('frameExecute').contentWindow.location.reload(true);
                                        }
                                        else {
                                            alert(data);
                                        }
                                    }
                                });
                            }
                        });
                });
            </script>

easyui-tree根据叶子节点获取父节点值(N层)

MVC:

public ActionResult SaveTree()
        {
            UserInformation user = RequestUserSession.GetSessionUser();
            int JobID = 0; int.TryParse(Request["JobID"], out JobID);
            int BrandID = 0; int.TryParse(Request["BrandID"], out BrandID);
            string RangeValueTemp = Request["RangeValue"];

            if (JobID == 0) return Content("保存失败");
            if (string.IsNullOrEmpty(RangeValueTemp)) return Content("保存失败");

            string[] arrTemp = RangeValueTemp.Split(',');
            List<JobViewRange> jvrList = new List<JobViewRange>();
            if (arrTemp != null)
            {
                foreach (var temp in arrTemp)
                {
                    if (temp.Length > 3 && temp.Contains('-'))
                    {
                        string[] arrValue = temp.Split('-');
                        if (arrValue != null && arrValue.Length == 4)
                        {
                            var jvr = jvrList.Find(a => a.JobID == JobID
                                            && a.ModuleID == int.Parse(arrValue[0].ToString())
                                            && a.MenuID == int.Parse(arrValue[1].ToString())
                                            && a.RangeType == arrValue[2].ToString()
                                    );
                            var jvrIndex = jvrList.FindIndex(a => a.JobID == JobID
                                            && a.ModuleID == int.Parse(arrValue[0].ToString())
                                            && a.MenuID == int.Parse(arrValue[1].ToString())
                                            && a.RangeType == arrValue[2].ToString()
                                    );
                            if (jvr != null)
                            {
                                jvr.RangeValue = jvr.RangeValue + "," + arrValue[3];//用,逗号拼接RangeValue值
                                jvrList.RemoveAt(jvrIndex);//移除旧的
                                jvrList.Add(jvr);//添加新的
                            }
                            else
                            {
                                JobViewRange job = new JobViewRange();
                                job.JobID = JobID;
                                job.ModuleID = int.Parse(arrValue[0].ToString());
                                job.MenuID = int.Parse(arrValue[1].ToString());
                                job.RangeType = arrValue[2];
                                job.RangeValue = arrValue[3];
                                job.BrandID = BrandID;
                                job.CreateBy = user.UserName;
                                job.CreateDate = DateTime.Now;
                                job.UpdateBy = user.UserName;
                                job.UpdateDate = DateTime.Now;
                                jvrList.Add(job);
                            }
                        }
                    }
                }
                if (jvrList.Any())
                {
                    foreach (var job in jvrList)
                    {
                        var b = JobViewRangeService.SaveTree(job);
                    }
                    return Content("OK");
                }
            }
            return Content("保存失败");
        }
        public ActionResult BindTree()
        {
            int JobID = 0; int.TryParse(Request["JobID"], out JobID);
            if (JobID == 0) return null;
           
            List<JobViewRange> tempList = JobViewRangeService.BindTree(JobID);
            if (tempList != null)
            {
                List<JobViewRange> list = new List<JobViewRange>();
                foreach (var temp in tempList)
                {
                    string[] arr = temp.RangeValue.Split(',');
                    foreach (var RangeValue in arr)
                    {
                        JobViewRange job = new JobViewRange();
                        job.RangeValue = temp.ModuleID + "-" + temp.MenuID + "-" + temp.RangeType + "-" + RangeValue;
                        list.Add(job);
                    }
                }
                return Json(list, JsonRequestBehavior.AllowGet);
            }
            return null;
        }

easyui-tree根据叶子节点获取父节点值(N层)

json:

public string GetTreeJson()
        {
            var module = GetModule();
            if (module != null && module.Any())
            {
                string jsonData = "[";
                module.ForEach(a =>
                {
                    jsonData += "{";
                    jsonData += "\"id\":\"" + a.ModuleID + "\",";
                    jsonData += "\"text\":\"" + a.ModuleName + "\",";
                    jsonData += "\"children\":[";
                    var menu = GetMenu(a.ModuleID);
                    menu.ForEach(b =>
                    {
                        jsonData += "{";
                        jsonData += "\"id\":\"" + b.MenuID + "\",";
                        jsonData += "\"text\":\"" + b.MenuName + "\",";
                        jsonData += "\"children\":[";
                        var rangeType = GetRangeType(b.MenuID);
                        rangeType.ForEach(c =>
                        {
                            jsonData += "{";
                            jsonData += "\"id\":\"" + c.RangeType + "\",";
                            jsonData += "\"text\":\"" + c.RangeTypeName + "\",";
                            jsonData += "\"children\":[";
                            var rangeValue = GetRangeValue(b.MenuID, c.RangeType);
                            rangeValue.ForEach(d =>
                            {
                                jsonData += "{";
                                //jsonData += "\"id\":\"" + d.Value + "\",";
                                jsonData += "\"id\":\"" + a.ModuleID + "-" + b.MenuID + "-" + c.RangeType + "-" + d.Value + "\",";//模块id-菜单id-范围类型-范围值id 如:1-1-T_Brand-1;就能根据此叶子节点id值split('-')
                                jsonData += "\"text\":\"" + d.Text + "\"";
                                jsonData += "}";
                                jsonData += ",";
                            });
                            jsonData = jsonData.TrimEnd(',');
                            jsonData += "]}";
                            jsonData += ',';
                        });
                        jsonData = jsonData.TrimEnd(',');
                        jsonData += "]}";
                        jsonData += ',';
                    });
                    jsonData = jsonData.TrimEnd(',');
                    jsonData += "]}";
                    jsonData += ',';
                });
                jsonData = jsonData.Substring(0, jsonData.Length - 1);
                jsonData += "]";
                return jsonData;
            }
            return "";
        }
easyui-tree根据叶子节点获取父节点值(N层)










  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值