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 }
  ]
}

预览

相关推荐
事圆则缓6 天前
OkHttp + Retrofit 协作原理
okhttp·retrofit
降临-max8 天前
接口自动化(TestNG+OKHttp)
软件测试·okhttp·自动化·testng
小刘在重生~8 天前
Django|Ajax 入门、JSON 返回、ECharts 图表、文件上传完整笔记
ajax·django·json
吴声子夜歌9 天前
Java扩展——OkHttp
java·开发语言·okhttp
零域码客9 天前
一文掌握 jQuery + Flask 全栈核心知识点(前端交互 + 后端接口 + 前后端联调)
前端·python·ajax·flask·jquery·前后端联调·web全栈
额鹅恶饿呃9 天前
Asynchronous JavaScript And XML(异步的JS和XML )
okhttp
泡海椒9 天前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
泡海椒9 天前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven
摇滚侠11 天前
《SpringBoot 3:入门与应用实战》第 9 章 跨域问题 阅读笔记 27
spring boot·笔记·okhttp
2601_9620974812 天前
JavaScript 异步编程
javascript·ajax·回调函数·异步编程·子线程