ztree一级一级加载,解决数据过大加载缓慢问题

【简介】

zTree 是利用 JQuery 的核心代码,实现一套能完成大部分常用功能的 Tree 插件

 兼容 IE、FireFox、Chrome 等浏览器  在一个页面内可同时生成多个 Tree 实例  支持 JSON 数据  支持一次性静态生成 和 Ajax 异步加载 两种方式  支持多种事件响应及反馈  支持 Tree 的节点移动、编辑、删除  支持任意更换皮肤 / 个性化图标(依靠css)  支持极其灵活的 checkbox 或 radio 选择功能  简单的参数配置实现 灵活多变的功能

ztree 官网API http://www.treejs.cn/v3/api.php

处理流程,先加载顶部节点,根据调用树的点击事件 通过treeObj.addNodes(null, newNodes); 给树添加子节点

js setting 简单配置:

var zTreeObj;
        // zTree 的参数配置,深入使用请参考 API 文档(setting 配置详解)
        var setting = {
                check: {
                    enable: false,
                    
                    //nocheckInherit: false
                    //chkStyle: 'checkbox',
                    
                   //chkboxType: { "Y": "ps", "N": "ps" }
                },
                view : {
                       selectedMulti: false,
                       showIcon: true,  //设置是否显示节点图标
                       showLine: true,  //设置是否显示节点与节点之间的连线
                      // fontCss: setFontCss
                   },
                async: {
                    enable: true, // 设置 zTree是否开启异步加载模式  加载全部信息
                    url: "", // Ajax 获取数据的 URL 地址  
                    autoParam: ["id"],    // 异步加载时自动提交父节点属性的参数,假设父节点 node = {id:1, name:"test"},异步加载时,提交参数 zId=1   
                    //dataFilter: filter
                },
                callback: {
                    onClick: zTreeOnOnClick//点击事件
                },
                data: { // 必须使用data  
                    simpleData: {
                        enable: true,
                        idKey: "id", // id编号命名 默认  
                        pIdKey: "pId", // 父id编号命名 默认  
                        rootPId: 0 // 用于修正根节点父节点数据,即 pIdKey 指定的属性值  
                    }
                }
        };

// js 初始化 加载顶级节点

$(document).ready(function(){
			//显示区域树
			   $.ajax({
		        type: "POST",
		        url: "kks/kks_list.do",
		        data: {},
		        dataType:"json",
		        success: function(data){
		       
		     	       zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, data.data);
		        },
		     });
			 
		});

ajax调用后台代码

@ResponseBody
@RequestMapping(value="kks_list")
	public Map queryRegion(){
		Map map = new HashMap();
		logger.info("======>进入queryRegion方法");
		try {
			
			JSONArray jsonArray = new JSONArray();
			List list = deviceInfoService.queryByParentCode("KKS顶点");//第一次加载顶部数据
			if(list !=null && list.size()>0){
				for(int i = 0 ; i

//树的点击事件 通过ajax获取数据 通过 treeObj.addNodes(null, newNodes);方法添加子节点

 function zTreeOnOnClick(event, treeId, treeNode){
    	   var treeObj = $.fn.zTree.getZTreeObj(treeId);
    	   var node = treeObj.getNodeByTId(treeNode.tId);
    	 //没有子节点才去查询
    		if(node.children == null || node.children == "undefined"){
    			$.ajax({
    				type: "POST",
    				async:false,
    				url: "kks/queryParenCodeY.do",
    				data:{
    					deviceCode:treeNode.id
    				},
    				dataType:"json",
    				success: function(data){
    					if(data.data !=null && data.data !=""){
    						//添加新节点
    						newNode = treeObj.addNodes(node, data.data);
    					}
    				},
    				error:function(event, XMLHttpRequest, ajaxOptions, thrownError){
    					result = true;
    					alert("请求失败!");
    				}
    			});
    		}

后台代码
@ResponseBody
	@RequestMapping(value="queryParenCodeY")
	public Map queryParenCodeY(@RequestParam("deviceCode") String deviceCode){
		logger.info("======>进入queryParenCodeY方法");

		Map map = new HashMap();
		try {
			JSONArray jsonArray = new JSONArray();
			List list = deviceInfoService.queryByParentCode(deviceCode);
			if(list !=null && list.size()>0){
				for(int i = 0; i退出queryParenCodeY方法");

		return map;
	}

这样点击树时就会掉用点击事件,将树的id传到后台,作为新加入节点的父节点Id

这就可以一级一级加载树,而不会一次性加载,导致树加载缓慢问题

你可能感兴趣的:(js插件)