TreeTable树形数据列表

TreeTable树形数据列表使用Treetable展示ajax数据,通用的List集合递归转换为具有层级关系的List集合

大家好,又见面了,我是你们的朋友全栈君。

    做项目的过程中遇到TreeTable,感觉很焦急,于是我就去github上面找,发现很糟糕。上面需要写的代码太过于多,本人手比较懒,所以几番查找。找到了一个比较实用的TreeTable的js

   TreeTable树形数据列表

    文件中的default和vsStyle是两种不同的风格

页面引用就是jquery.treeTable.js就可以了,那么怎么实现树形列表呢?当然数据就需要是json格式

var request = JSON.stringify(paramsModel);  
		request = escape(encodeURIComponent(request));
		var url=baseUrl+"rest/xx/"+request+"/"+key+".json";	
		console.log(url);
		$.ajax({
            type: "get",
            url: url, //Servlet请求地址
            dataType: 'json',
            cache: false,
  			async: false,
            success: function (data) {
            	//eval将字符串转成对象数组  
            	data=eval(data);
            	var showContent = ""; //添加内容变量
            	if(data!=null){
            		var con = data.rows;//获取json中的list列表
                    console.log(con);
                    if(con.length>0){
    	                for (var i = 0; i < con.length; i++) {
    	                    var a = con[i];
    	                    if (a.fid == a.departId) { //判断是否是一级节点
    	                        showContent += "";
    	                        
    	                    } else {
    	                        showContent += "";
    	                        
    	                    }
    	                }
                    }
            	}
                $("#treeTable").append(showContent);
                //以下为初始化表格样式
                var option = {
                    theme: 'vsStyle',
                    expandLevel: 2,
                };
                $('#treeTable').treeTable(option);
                console.info("内容已经加载并初始化");
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(errorThrown);
                console.log("数据请求异常 请查看控制台错误 或者检查url配置");
            }
        });

其中里面的theme就是不同风格对应的文件夹

那么后台的数据就需要对应成json格式

这里推荐一个处理递归数组的Java文件

public class ProjectConstructeTreeList {
    private List<BimProjectConstruction> resultNodes = new ArrayList<BimProjectConstruction>();//树形结构排序之后list内容
    private List<BimProjectConstruction> nodes; //传入list参数
    
    public ProjectConstructeTreeList(List<BimProjectConstruction> nodes) {//通过构造函数初始化
        this.nodes = nodes;
    }

    /**
     * 构建树形结构list
     * @return 返回树形结构List列表
     */
    public List<BimProjectConstruction> buildTree() {
        for (BimProjectConstruction node : nodes) {
            if (node.getFid().equals(node.getDepartId())) {//通过循环一级节点 就可以通过递归获取二级以下节点
                resultNodes.add(node);//添加一级节点
                build(node);//递归获取二级、三级、。。。节点
            }
        }
        return resultNodes;
    }
    /**
     * 递归循环子节点
     *
     * @param node 当前节点
     */
    private void build(BimProjectConstruction node) {
        List<BimProjectConstruction> children = getChildren(node);
        if (!children.isEmpty()) {//如果存在子节点
            for (BimProjectConstruction child : children) {//将子节点遍历加入返回值中
                resultNodes.add(child);
                build(child);
            }
        }
    }
    /**
     * @param node
     * @return 返回
     */
    private List<BimProjectConstruction> getChildren(BimProjectConstruction node) {
        List<BimProjectConstruction> children = new ArrayList<BimProjectConstruction>();
        for (BimProjectConstruction child : nodes) {
            if (node.getId().equals(child.getFid())) {//如果id等于父id
                children.add(child);//将该节点加入循环列表中
            }
        }
        return children;
    }

}

调用方式:

ProjectConstructeTreeList tree = new ProjectConstructeTreeList(ConstructionList);
List<BimProjectConstruction> listTree=tree.buildTree();

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142936.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL timestampdiff()函数[通俗易懂]

    MySQL timestampdiff()函数[通俗易懂]下面说明了TIMESTAMPDIFF函数的语法。TIMESTAMPDIFF(unit,begin,end);TIMESTAMPDIFF函数返回begin-end的结果,其中begin和end是DATE或DATETIME表达式。TIMESTAMPDIFF函数允许其参数具有混合类型,例如,begin是DATE值,end可以是DATETIME值。如果使用DATE值,则TIMESTAMPDIFF函…

    2022年6月11日
    41
  • python入门教程(非常详细)下载_古典吉他入门零基础

    python入门教程(非常详细)下载_古典吉他入门零基础世界上没有绝对的公平,如果我们起点就比别人第一步,那就更需要比别人努力了。每天比别人努力多一点点,就会有很大的突破。你必须特别努力,才能显得毫不费力。期待你成为理想中的自己那一天,加油!

    2022年8月29日
    0
  • ubuntu安装完毕后拔掉u盘_4个CPU最大能开多少进程

    ubuntu安装完毕后拔掉u盘_4个CPU最大能开多少进程该方法同样适用于:1.强制卸载无法卸载的USB设备,比如:解决因为在传输数据未完成时直接拔下存储设备导致的后台D进程驻留(无法被kill);2.系统更新固件可能导致(只遇到过一次)的USB存储设备无法被识别(重启系统同样可以解决);3.不重启系统,只重启xhci控制器。

    2022年9月15日
    0
  • linux vim用不了(排位老是遇到坑怎么办)

    这里写自定义目录标题Vim是Linux常用的文本编辑器新的改变插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入Vim是Linux常用的文本编辑器1、 输入命令vi文件名,进…

    2022年4月11日
    29
  • c语言飞机订票系统设计,飞机订票系统设计「建议收藏」

    c语言飞机订票系统设计,飞机订票系统设计「建议收藏」该楼层疑似违规已被系统折叠隐藏此楼查看此楼u=find_num_hlink_list(save,book_flight_num);strcpy(ticket_x1.flight_num,u->info.flight_num);strcpy(ticket_x1.start_add,u->info.start_add);strcpy(ticket_x1.end_add,u->inf…

    2022年6月16日
    26
  • 社区打造智慧小区_idc智能化解决方案

    社区打造智慧小区_idc智能化解决方案智慧社区建设方案丨智慧小区智能化解决方案随着物联网技术和我国新一代互联网技术的发展,未来社区网络将会实现全覆盖,通过社区网络和物联网络,将会实现社区机电设备和住宅的自动化,智能化,实现远程监控和网络数字化。智慧社区是社区综合服务管理的一种创新,利用前沿的智能化基础设施建设,增强社区治理和小区管理智能化,推动便民措施服务项目智能化,使社区居民的衣食住行更为舒服、高效率。智慧社区概念介绍:智慧社区是指充分利用物联网、云计算、移动互联网等新一代信息技术的集成应用,涉及到智能楼…

    2022年10月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号