miniUI中的tree

2024-08-22 07:38
文章标签 tree miniui

本文主要是介绍miniUI中的tree,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结一下在最近做统计学的一个项目中,用到的关于tree的知识点,前端使用的是miniUI,所以谈到的基本都是miniUI框架中的tree。
这里写图片描述
如上图所示,我来说一下这种树的构造和实现。
(1)首先可以看到它是一颗多层的树形
(2)不同的层级有不同的节点内容,我们把节点叫做node
(3)如何构造这棵树?

<div size="250" maxSize="500" minSize="100" showCollapseButton="true" style="border-width:1px;overflow-x: hidden"><td style="width:100%;overflow-x: hidden" align="left"><ul id="leftTree" class="mini-tree"  style="width:100%;height:100%;"showArrow="true" showTreeIcon="false" textField="text" idField="id" parentField="pid" expandOnLoad="0" resultAsTree="true" ></ul></td></div>

我们使用了mini自带的class=“mini-tree”,他会将我们在后台组织的树的数据自动解析为树并显示,所以后台只需要组织好数据就行.

showArrow:是否显示树前面的箭头,true/false
showTreeIcon:显示树前面的图标,默认是白板,true/false
resultAsTree:url数据是否列表 true/false

简单说一下后台的数据组织:
方式1:你可以每层的的内容进行查询,将所有的内容全部放到你的实体就可以。
方式2:根据树的形式,你可以直接利用SQL来组织好数据,最后在java代码里面通过循环来处理子节点也是可以的。
特别声明:
用miniUI的tree控件,那么你的后台实体应该如下声明,否则数据将不能被miniUI框架识别和正确显示数据:

public class TreeVo{
private String id;//代表树的每个节点的id
private String text;//代表树的每个节点的文本值
private List<TreeVo> children;//代表该节点的子节点集合
}

因为在开发中,有个同事写了个children2,结果无论怎么处理,树的数据是对的,就是不能显示正确的树结构,最后经过查看文档和分析,发现是因为框架不能识别children2这个属性。


前面说了后台如何构造树的数据以及会使用mini-tree的控件,现在说一下前端如何触发请求后台,寻找数据:

mini.parse();//表示将控件等解析为miniUI框架的
var tree = mini.get("leftTree");//表示获取到树这个对象
tree.setUrl(url);//url是你请求后台组织数据的地址

如上图所示,假设,我的每层节点都有一个url地址,表示点击每个节点,在树的右侧会显示一张数据表单,那么如何给该节点加上url呢?而且不同层级的节点的url不同,同层级的节点的url相同,所传参数的值不同,此时又改如何处理?
(1)大概思路
通过查阅官网API,我们可看到一些关于tree的事件,关于给每层节点添加url,我选用了drawnode事件,可以理解为在我初始化界面的时候,动态画树的每个节点的时候,我们就将相应的URL画上去。
(2)具体实现

 tree.on("drawnode",function (e) {var node = e.node;//我们可以通过getLevel来获取节点的层级,表示该节点属于第几层var level = tree.getLevel(node);//假设我们要给第二层添加urlif(level === '2'){e.nodeHtml = '<a href="#" jumpTo(\''+node.id+'\')><img src="${ctxStatic}/images/li.png"></a>'+'<a href="#" showNewPage("${ctx}/xxxx/xx?id=' + node.id + '","1")>' + node.text + '</a>';}//我们可以通过如下方法获取该节点的父节点,如果你想使用父节点的属性,自己可以console.info(parentNode);然后看其中的属性值var parenetNode = tree.getParentNode(node);});

总结一下:
(1)给节点加url可以通过drawnode事件在绘制树的时候动态绘制
(2)不同的层级节点url不同,可以通过tree.getLevel(node);方法来获取节点的层级
(3)获取父节点,可通过tree.getParentNode(node);来实现


接着说关于点击节点,右侧显示表单的问题,表单是放在一个iframe里面的,具体实现如下:

<iframe src="" id="content-iframe2" frameborder="0" style="width:100%;height:100%;"></iframe>

如何让iframe里面显示表单的具体内容,需要进行如下的操作:

$('#content-iframe').attr("src",url);

最后要说的关于这棵树的问题是,看上图,大概可以看出他们是放在一个div里,class="mini-tabs"的控件中,里面有两个div,分别是主题和数据,需求还有一个是通过点击图标跳转到数据的树,并且展开树,右侧显示对应的表单信息。
问题点:
(1)tab的切换
(2)找到对应的节点
(3)展开树
具体实现如下:

var tabs = mini.get("listDiv");tabs.activeTab("tabs2");var list = tree1.getList();var url = "${ctx}/xxx/xxx?id="+id;for(var i=0;i<list.length;i++){if(list[i].id == id){tree1.expandPath(list[i]);$('#content-iframe2').attr("src",url);}}

这棵树就总结到这里,具体右侧的表单操作以后有时间再说,因为是第一次接触树这种控件,所以才想抽时间总结一下,方便以后复习用。

在这里插入图片描述

这篇关于miniUI中的tree的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095646

相关文章

树(Tree)——《啊哈!算法》

树 什么是树?树是一种特殊的图,不包含回路的连通无向树。 正因为树有着“不包含回路”这个特点,所以树就被赋予了很多特性。 一棵树中的任意两个结点有且仅有唯一的一条路径连通。一棵树如果有n个结点,那么它一定恰好有n-1条边。在一棵树中加一条边将会构成一个回路。 一棵树有且只有一个根结点。 没有父结点的结点称为根结点(祖先)。没有子结点的结点称为叶结点。如果一个结点既不是根结点也不是叶

226 Invert Binary Tree

//226 Invert Binary Tree//算法思路:主要使用递归算法public class Solution {public TreeNode invertTree(TreeNode root) {//1 出口 空节点if (root==null)return null;//2 递归 调用自己TreeNode left = root.left;TreeNode right = ro

Sorry!Hbase的LSM Tree就是可以为所欲为!

我们先抛出一个问题: LSM树是HBase里使用的非常有创意的一种数据结构。在有代表性的关系型数据库如MySQL、SQL Server、Oracle中,数据存储与索引的基本结构就是我们耳熟能详的B树和B+树。而在一些主流的NoSQL数据库如HBase、Cassandra、LevelDB、RocksDB中,则是使用日志结构合并树(Log-structured Merge Tree,LSM Tr

【spring】does not have member field ‘com.sun.tools.javac.tree.JCTree qualid

spring-in-action-6-samples 的JDK版本 最小是11,我使用 了22: jdk21 jdk22 都与lombok 不兼容,必须使用兼容版本, 否则报错: thingsboard 的大神解释了: java: java.lang.NoSuchFieldError: Class com

[LeetCode] 863. All Nodes Distance K in Binary Tree

题:https://leetcode.com/problems/all-nodes-distance-k-in-binary-tree/ 题目大意 求给树中,距给定 结点 指定长度的 所有结点的val 思路 tree -> graph 、 bfs 先遍历树,并用map记录每个结点的父结点 ,将树变为图,然后 bfs。 /*** Definition for a binary tree

js实现树级递归,通过js生成tree树形菜单(递归算法)

1、效果图 需求:首先这是一个数据集—js的类型,我们需要把生成一个tree形式的对象 : var data = [{ id: 1, name: "办公管理", pid: 0 },{ id: 2, name: "请假申请", pid: 1 },{ id: 3, name: "出差申请", pid: 1 },{ id: 4, name: "请假记录", pid: 2 },{ id:

【unity实战】利用Root Motion+Blend Tree+Input System+Cinemachine制作一个简单的角色控制器

文章目录 前言动画设置Blend Tree配置角色添加刚体和碰撞体代码控制人物移动那么我们接下来调整一下相机的视角效果参考完结 前言 Input System知识参考: 【推荐100个unity插件之18】Unity 新版输入系统Input System的使用,看这篇就够了 Cinemachine虚拟相机知识参考: 【推荐100个unity插件之10】Unity最全的最详细的C

树链剖分 + 后缀数组 - E. Misha and LCP on Tree

E. Misha and LCP on Tree  Problem's Link   Mean:  给出一棵树,每个结点上有一个字母。每个询问给出两个路径,问这两个路径的串的最长公共前缀。 analyse: 做法:树链剖分+后缀数组. 记录每条链的串,正反都需要标记,组成一个长串. 然后记录每条链对应的串在大串中的位置,对大串求后缀数组,最后询问就是在一些链

数据结构 - Codeforces Round #353 (Div. 2) D. Tree Construction

Tree Construction  Problem's Link  ---------------------------------------------------------------------------- Mean:  给定n个数,按照构造Binary Search Tree的方式来构造BST树,按顺序输出每一个非root结点的父节点的值。 analyse

【HDU】4871 Shortest-path tree 最短路+点分治

传送门:【HDU】4871 Shortest-path tree 题目分析: 学了点分治后来看这道题,简直就是水题。。。 但是我竟然花了将近一个晚上才写出来。。。就因为一个地方写漏了T U T。。 首先根据题意求一棵树,最短路一下,然后最小字典序就按照编号顺序遍历邻接表给节点标记。 剩下的就是树分治的事了。 在以重心X为根的子树中,按照X的子节点v的子树中最长路径包含节点数升序遍