jsTree动态加载数据

Views代码

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/content/js/plugins/jsTree/jstree.min.js"></script>
</head>
<body>
    <div id="using_json"></div>
    <script>
        $(document).ready(function () {
            @{
                var a = new HtmlString(ViewBag.Region);//将动态数据转换成HTMLstring格式
            }
            $("#using_json").jstree(@a);//jsTree绑定数据
        });
    </script>
</body>
</html>

Controller代码

        public ActionResult Index()
        {
            RegionModels list = new RegionModels();
            list.region = service.GetRegion();//查询区域数据
            list.dormcategory = service.GetDormCategory();//获取宿舍类型
            RegionModel region = service.GetSingleRegion("0");
            ViewBag.Region = GetRegionJson(region.Cid, list.region);
            return View(list);
        }
        /// <summary>
        /// 返回jsTree的最外层值
        /// </summary>
        /// <param name="parentid">父级Cid</param>
        /// <param name="data">数据</param>
        /// <returns></returns>
        public string GetRegionJson(string parentid, List<RegionModel> data)
        {
            string icon = GetIcon(0);
            string a = "{"core": {"themes": {"theme": "classic","dots": true},"data":[{"text":"区域","icon": ""+icon+"","id":"" + parentid + ",0","state": {"opened": true },"children":[";
            StringBuilder sb = new StringBuilder(a);
            RegionList(parentid, data, sb);//添加子集数据
            sb.Append("]}]}}");
            return sb.ToString();
        }
        /// <summary>
        /// 添加jsTree子集数据
        /// </summary>
        /// <param name="parentid"></param>
        /// <param name="list"></param>
        /// <param name="sb"></param>
        public void RegionList(string parentid, List<RegionModel> list, StringBuilder sb)
        {
            IEnumerable<RegionModel> temp = list.Where(n => n.ParentCid.Trim() == parentid).OrderBy(r => r.Name);
            foreach (var item in temp)
            {
                string open = item.Level == 1 ? "true" : "false";
                string icon = GetIcon(item.Level);
                string lastComma = "";
                if (item != temp.Last())
                    lastComma = ",";
                List<RegionModel> children = list.Where(n => n.ParentCid.Trim() == item.Cid).ToList();
                if (children.Count == 0)
                {
                    sb.Append($" {{ "text": "{item.Name}","icon": "{icon}","id":"{ item.Cid.ToString() + "," + item.Level.ToString()}","state": {{"opened": {open} }},}}{lastComma}");
                }
                else
                {
                    sb.Append($" {{"text": "{item.Name}","icon": "{icon}","id":"{ item.Cid.ToString() + "," + item.Level.ToString()}","state": {{"opened":  {open} }},");
                    sb.Append(""children": [");
                    RegionList(item.Cid, list, sb);
                    sb.Append($"]}}{lastComma}");
                }
            }
        }

结果

原文地址:https://www.cnblogs.com/bosamvs/p/6408303.html