table-tree 表格树、树形数据处理、数据转树形数据
前言
公司想搞个表格树的展示页面,看着element有个表格树,还以为可以用。
用出来只用表格没有树,研究半天没研究个所以然,只能从新找个
npm里找到一个:vue-table-with-tree-grid
正文
element的坑
element:http://element-cn.eleme.io/#/zh-CN/component/table


然后一模一样的代码用在项目中,标点符合都没改:


emmmmmmmm。。。。最前面的箭头不见了。。。换了好几个系统试了一下。居然都没有。。
毫不犹豫投入了vue-table-with-tree-grid的怀抱
vue-table-with-tree-grid
npm中它的地址:https://www.npmjs.com/package/vue-table-with-tree-grid
安装
npm i vue-table-with-tree-grid -S
Or use yarn: yarn add vue-table-with-tree-grid
导入
import Vue from 'vue'
import ZkTable from 'vue-table-with-tree-grid' Vue.use(ZkTable)
Or import Vue from 'vue'
import ZkTable from 'vue-table-with-tree-grid' Vue.component(ZkTable.name, ZkTable)
示例:
https://github.com/MisterTaki/vue-table-with-tree-grid/blob/master/example/Example.vue
DOM
<zk-table ref="table" :data="data" :columns="columns" :stripe="props.stripe" :border="props.border" :show-header="props.showHeader" :show-summary="props.showSummary" :show-row-hover="props.showRowHover" :show-index="props.showIndex" :tree-type="props.treeType" :is-fold="props.isFold" :expand-type="props.expandType" :selection-type="props.selectionType" sum-text="sum" index-text="#"/>
数据
props: {
stripe: false,
border: false,
showHeader: true,
showSummary: false,
showRowHover: true,
showIndex: false,
treeType: true,
isFold: true,
expandType: false,
selectionType: false
},
data: [
{
name: 'Jack',
sex: 'male',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score:
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score:
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score:
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score:
}
]
}
]
}
]
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score:
}
]
},
{
name: 'Tom',
sex: 'male',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score:
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score:
}
]
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score:
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score:
}
]
}
]
},
{
name: 'Tom',
sex: 'male',
likes: ['football', 'basketball'],
score:
},
{
name: 'Tom',
sex: 'male',
likes: ['football', 'basketball'],
score: ,
children: [
{
name: 'Ashley',
sex: 'female',
likes: ['football', 'basketball'],
score:
},
{
name: 'Taki',
sex: 'male',
likes: ['football', 'basketball'],
score:
}
]
}
],
columns: [
{
label: 'name',
prop: 'name',
width: '400px'
},
{
label: 'sex',
prop: 'sex',
minWidth: '50px'
},
{
label: 'score',
prop: 'score'
},
{
label: 'likes',
prop: 'likes',
minWidth: '200px',
type: 'template',
template: 'likes'
}
],
text1: this.$store.getters.code,
tableData: [],
currentPage: ,
total: ,
pageSize: ,
loading: false,
defaultProps: {
children: 'children',
label: 'label'
}
显示效果:


递归处理树形数据
用树形数据的时候经常会需要为树形数据修改值,增加值之类的
示例
respose.data // 我是树形数据
//遍历
for (let i = , len = respose.data.length; i < len; i++) {
readTree(respose.data[i])
}
const readTree = function(node) {
node.flag === '' ? node.flag1 = '我是flag1的值1' : node.flag1 = '我是flag1的值2'
node.label = 我是label 的新值
if (node.children && node.children.length > ) {
for (let i = , len = node.children.length; i < len; i++) {
readTree(node.children[i])
}
}
}
原始数据转树形数据
//data为原始数据,root最大的根节点,idTxt为本身标识, pidTxt为父级标识, pushTxt为子级标识
getTree(data, root, idTxt, pidTxt, pushTxt) {
// 递归方法
function getNode(id) {
var node = []
for (var i = ; i < data.length; i++) {
if (datai === id) {
datai = getNode(datai)
node.push(data[i])
}
}
if (node.length === ) {
return
} else {
return node
}
}
// 使用根节点
return getNode(root)
}
//原始数据:
{"id":,"pId":,"name":"父节点1 - 展开","open":true},
{"id":,"pId":,"name":"父节点11 - 折叠"},
{"id":,"pId":,"name":"父节点12 - 折叠"},
{"id":,"pId":,"name":"父节点13 - 没有子节点"},
{"id":,"pId":,"name":"父节点2 - 折叠"},
{"id":,"pId":,"name":"父节点21 - 展开","open":true},
{"id":,"pId":,"name":"父节点22 - 折叠"},
{"id":,"pId":,"name":"父节点23 - 折叠"},
{"id":,"pId":,"name":"父节点3 - 没有子节点"}
`
`
//处理后的数据
[
{
"id": ,
"pId": ,
"name": "父节点1 - 展开",
"open": true,
"children": [
{
"id": ,
"pId": ,
"name": "父节点11 - 折叠"
},
{
"id": ,
"pId": ,
"name": "父节点12 - 折叠"
},
{
"id": ,
"pId": ,
"name": "父节点13 - 没有子节点"
}
]
},
{
"id": ,
"pId": ,
"name": "父节点2 - 折叠",
"children": [
{
"id": ,
"pId": ,
"name": "父节点21 - 展开",
"open": true
},
{
"id": ,
"pId": ,
"name": "父节点22 - 折叠"
},
{
"id": ,
"pId": ,
"name": "父节点23 - 折叠"
}
]
},
{
"id": ,
"pId": ,
"name": "父节点3 - 没有子节点"
}
]
完结 ,撒花

欢迎大家关注公众号,不定时干货,只做有价值的输出
作者:Dawnzhang
出处:https://www.cnblogs.com/clwydjgs/p/10689851.html
版权:本文版权归作者
转载:欢迎转载,但未经作者同意,必须保留此段声明;
往期文章:
Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文
你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
table-tree 表格树、树形数据处理、数据转树形数据的更多相关文章
- 页面设计--Tree目录树
Tree目录树控件属性: 根据数据集合来配置相应的信息 加载模式有自动加载.自定加载 web中显示效果图:
- 1. mvc 树形控件tree + 表格jqgrid 显示界面
1.界面显示效果 2.资源下载 地址 1. jstree https://www.jstree.com/ 2.表格jqgrid https://blog.mn886.net/jqGrid/ ...
- Web中树形数据(层级关系数据)的实现—以行政区树为例
在Web开发中常常遇到树形数据的操作,如菜单.组织机构.行政区(省.市.县)等具有层级关系的数据. 以下以行政区为例说明树形数据(层级关系数据)的存储以及实现,效果如图所看到的. 1 数据库表结构设计 ...
- vue 表格树 固定表头
参考网上黄龙的表格树进行完善,并添加固定表头等的功能,目前是在iview的项目中实现,如果想在element中实现的话修改对应的元素标签及相关写法即可. <!-- @events @on-row ...
- ligerUI---ligerGrid中treegrid(表格树)的使用
写在前面: 表格树是在普通ligerGrid的基础上,做了一点改变,使数据以表格树的形式显示出来,适用于有级别的数据比如菜单(有父菜单,父菜单下面有子菜单).表格树的显示有两种方法,可以根据自己的项目 ...
- treegrid 表格树
treegrid 实现表格树的结构 效果图: 第一步:页面布局 <div class="col-sm-12 select-table table-striped" styl ...
- [置顶] ※数据结构※→☆非线性结构(tree)☆============树结点 链式存储结构(tree node list)(十四)
结点: 包括一个数据元素及若干个指向其它子树的分支:例如,A,B,C,D等. 在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,简称结点. 在C语言 ...
- CSS实现树形结构 + js加载数据
看到一款树形结构,比较喜欢它的样式,就参照它的外观自己做了一个,练习一下CSS. 做出来的效果如下: li { position: relative; padding: 5px 0; margin:0 ...
- Delphi中根据分类数据生成树形结构的最优方法
一. 引言: TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能 ...
随机推荐
- 在后台业务管理系统中使用Autofac实现微信接口的处理
在后台业务管理系统中使用Autofac实现微信接口的处理,我们只需要把相关使用到的DLL放到BIN目录里面即可,通过IOC控制反转方式实现对接口的调用.在实现在业务系统里面,我们本身程序可能已经依赖了 ...
- Mac下开发ASP.NET Core应用,我用FineUICore!
在 Mac 下开发 ASP.NET Core 2.0+ 应用,我用FineUICore! FineUICore:企业级 ASP.NET 控件库,10年持续更新,只为你来:http://fineui.c ...
- Kubernetes 网络排错指南
本文介绍各种常见的网络问题以及排错方法,包括 Pod 访问异常.Service 访问异常以及网络安全策略异常等. 说到 Kubernetes 的网络,其实无非就是以下三种情况之一 Pod 访问容器外部 ...
- iframe知识点详解
<iframe>标签规定一个内联框架,一个内联框架被用来在当前HTML文档中嵌入另一个文档. 1. 常用属性 2. 主要API 3. 轮询 4. 长轮询 5. 自适应 6. 安全性 7. ...
- HTML HTML5 新特性
一.语义化标签 语义化标签 为页面提供了更好的页面结构. 描述 属性 <header></header> 定义文档的头部区域 <footer></foote ...
- C#如何使SQLite程序集既能适应32位系统也能适应64位系统
分享5: 需求:都知道Sqlite3是分32位和64位版本的,那如果将一个Sqlite3.dll文件全适用 分析:Sqlite是种轻量级的数据库文件,使用了混合编程而成的,一部分采用非托管的C++代码 ...
- int float double 最小值与最大值
#include <iostream> #include <limits> using namespace std; int main() { cout << &q ...
- Ajax设置自定义请求头的两种方法
用自定义请求头token为例 方法一 $.ajax({ type: "post", url:"http://127.0.0.1:4564/bsky-app/templat ...
- gVim编辑器 操作篇
gVim是一款强大的编辑器,可以满足大部分语言的编程需要.尤其是其自带的模板定制功能对于Verilog来说非常受用.然而gVim有很多操作是不同于其他编辑器的,这让很多初学者望而却步,因此,本文将gV ...
- Object.clone()方法与对象的深浅拷贝
转载:[https://www.cnblogs.com/nickhan/p/8569329.html] 引言 在某些场景中,我们需要获取到一个对象的拷贝用于某些处理.这时候就可以用到Java中的Obj ...