layui zTree 控件 AJAX绑定 点击tree事件 获取tree值

html和js

html 复制代码
 <div>
     <ul id="treeDemo" class="ztree"></ul>
 </div>
 <script>
     // zTree 配置
     var setting = {
         data: {
             simpleData: {
                 enable: true,
                 idKey: "id",
                 pIdKey: "pid",
                 rootPId: 0
             }
         },
         callback: {
             onClick: zTreeOnClick  // 点击事件
         }
     };
     // ===================== 关键:AJAX 获取树数据 =====================
     $(function () {
         $.ajax({
             type: "POST",
             data: [],
             url: "/SalesOpportunity/GET_SALES_OPPORTUNITY_PROJECT",
             success: function (res) {
                 console.log(res, zNodes);
                 var zNodes = res.data;
                 // 初始化树
                 $.fn.zTree.init($("#treeDemo"), setting, zNodes);
             }
         });
     });

     // zTree点击事件
     function zTreeOnClick(event, treeId, treeNode) {
         //$("#showText").text("ID:" + treeNode.id + ",名称:" + treeNode.name);
         $("#PROJECT_TITLE").val(treeNode.name);
         $("#PROJECT_INFO").val(treeNode.name);
         $("#EST_AMOUNT").val(treeNode.id * 10);

         $("#NEEDS").val(treeNode.name);
         $("#RESPONSE").val(treeNode.name);
         $("#NEED_SUPPORT").val(treeNode.name);

         $("#PROJECT_STATUS").val("进行中");
         $("#PROJECT_LEVEL").val("A");
         $("#REMARKS").val(treeNode.name);
     }

     // 点击按钮 → 获取当前选中的节点
     function getTreeSelected() {
         // 1. 获取 zTree 实例
         var zTree = $.fn.zTree.getZTreeObj("treeDemo");

         // 2. 获取当前选中的节点
         var nodes = zTree.getSelectedNodes();

         // 3. 判断有没有选中
         if (nodes.length == 0) {
             layer.msg("请先选择一个项目!", { icon: 2 });
             return;
         }

         // 4. 拿到值!
         var id = nodes[0].id;
         var name = nodes[0].name;

         // 你想干嘛就干嘛
         alert("选中ID:" + id + "\n选中名称:" + name);
     }
 </script>

Controller:

cs 复制代码
        [HttpPost]
        public ActionResult GET_SALES_OPPORTUNITY_PROJECT()
        {
            MyResponse result = new MyResponse();
            result.code = 200;
            result.success = true;
            result.message = "";

            List<zTreeClass> list = new List<zTreeClass>();
            for (int i = 0; i < 5; i++)
            {
                zTreeClass z = new zTreeClass();
                z.id = i+1;
                z.name = $"XXX项目{i + 1}";
                z.pid = 0;
                list.Add(z);
            }
            result.data = list;

            return Json(result);
        }

        public class zTreeClass
        {
            //节点的id值
            public int id { get; set; }
            //节点的name值
            public string name { get; set; }
            //父节点id值,多层tree的子节点配置此id值,根结点id为0
            public int pid { get; set; } = 0;
        }

后端返回data的格式要求(必须这样)

cs 复制代码
{
  "code": 0,
  "data": [
    { "id": 1, "name": "XXXX项目1", "pid": 0 },
    { "id": 2, "name": "XXXX项目2", "pid": 0},
    { "id": 3, "name": "XXXX项目3", "pid": 0},
    { "id": 4, "name": "XXXX项目4", "pid": 0 }
  ]
}

预览

相关推荐
liangshanbo12158 天前
面试题:页面需要发起大量 Ajax / HTTP 请求时,如何优化请求性能?
前端·http·ajax
RobinDevNotes8 天前
JAX 分布式训练,和 PyTorch 有什么不一样
人工智能·深度学习·ajax
小七在进步8 天前
类和对象(四)
java·javascript·ajax
没差c17 天前
RetrofitClient写接口、导包、配置、路径
java·spring boot·okhttp
wcy031019 天前
POST为什么会发送两次请求
javascript·ajax
刺客码21 天前
Layui 表格固定列行高错位问题解决方案
前端框架·layui·jquery·web
事圆则缓1 个月前
OkHttp + Retrofit 协作原理
okhttp·retrofit
降临-max1 个月前
接口自动化(TestNG+OKHttp)
软件测试·okhttp·自动化·testng
小刘在重生~1 个月前
Django|Ajax 入门、JSON 返回、ECharts 图表、文件上传完整笔记
ajax·django·json
吴声子夜歌1 个月前
Java扩展——OkHttp
java·开发语言·okhttp