前言

公司想搞个表格树的展示页面,看着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吗?或许你们需要看一下这篇博文

  你真的了解博客园的目录么。。

  博客园博客排版(js样式实例)

table-tree 表格树、树形数据处理、数据转树形数据的更多相关文章

  1. 页面设计--Tree目录树

    Tree目录树控件属性: 根据数据集合来配置相应的信息 加载模式有自动加载.自定加载 web中显示效果图:

  2. 1. mvc 树形控件tree + 表格jqgrid 显示界面

    1.界面显示效果 2.资源下载 地址 1. jstree  https://www.jstree.com/   2.表格jqgrid  https://blog.mn886.net/jqGrid/  ...

  3. Web中树形数据(层级关系数据)的实现—以行政区树为例

    在Web开发中常常遇到树形数据的操作,如菜单.组织机构.行政区(省.市.县)等具有层级关系的数据. 以下以行政区为例说明树形数据(层级关系数据)的存储以及实现,效果如图所看到的. 1 数据库表结构设计 ...

  4. vue 表格树 固定表头

    参考网上黄龙的表格树进行完善,并添加固定表头等的功能,目前是在iview的项目中实现,如果想在element中实现的话修改对应的元素标签及相关写法即可. <!-- @events @on-row ...

  5. ligerUI---ligerGrid中treegrid(表格树)的使用

    写在前面: 表格树是在普通ligerGrid的基础上,做了一点改变,使数据以表格树的形式显示出来,适用于有级别的数据比如菜单(有父菜单,父菜单下面有子菜单).表格树的显示有两种方法,可以根据自己的项目 ...

  6. treegrid 表格树

    treegrid  实现表格树的结构 效果图: 第一步:页面布局 <div class="col-sm-12 select-table table-striped" styl ...

  7. [置顶] ※数据结构※→☆非线性结构(tree)☆============树结点 链式存储结构(tree node list)(十四)

    结点: 包括一个数据元素及若干个指向其它子树的分支:例如,A,B,C,D等. 在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,简称结点. 在C语言 ...

  8. CSS实现树形结构 + js加载数据

    看到一款树形结构,比较喜欢它的样式,就参照它的外观自己做了一个,练习一下CSS. 做出来的效果如下: li { position: relative; padding: 5px 0; margin:0 ...

  9. Delphi中根据分类数据生成树形结构的最优方法

    一. 引言:    TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能 ...

随机推荐

  1. 元数据Metadata

    元数据是什么? 元数据(Metadata),又称中介数据.中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置.历史数据. ...

  2. 好程序员web前端分享12个CSS高级技巧汇总

    好程序员web前端分享下面这些CSS高级技巧,一般人我可不告诉他哦. 使用 :not() 在菜单上应用/取消应用边框 给body添加行高 所有一切都垂直居中 逗号分隔的列表 使用负的 nth-chil ...

  3. windows 10隐藏各种文件夹

    1.windows键+R打开运行,或者Ctrl+Alt+Del键调出任务管理器--文件--运行新的任务,然后出入"regedit"打开注册表: 2.按目录找到:[-HKEY_CLA ...

  4. pytorch的函数中的group参数的作用

    1.当设置group=1时: conv = nn.Conv2d(in_channels=, out_channels=, kernel_size=, groups=) conv.weight.data ...

  5. Golang 入门 : 打造开发环境

    工欲善其事,必先利其器!在学习和使用 Golang 时如果有一款得心应手的 IDE,相信一定可以事半功倍.虽然很多 IDE 都提供了对 Golang 的支持,但真正好用的没几个.VSCode 算是不错 ...

  6. 随心测试_软测基础_001<说在开始_测试理念>

  7. ABP之N层架构

    介绍 应用程序代码库的分层是一种广泛接受的技术,有助于降低复杂性并提高代码的可重用性. 为了实现分层体系结构,ASP.NET Boilerplate遵循领域驱动设计(DDD)的原则. 领域驱动设计(D ...

  8. 解决 golang unrecognized import path "golang.org/x" 之类错误的一种尝试

    如果使用的开发IDE是goland,那么 打开 FILE -> setting -> Go Modules 选项 ,在proxy 选项上填写 "https://goproxy.i ...

  9. php将字符串转为二进制数据串

    /** * 将字符串转换成二进制 * @param type $str * @return type */ function StrToBin($str){ //1.列出每个字符 $arr = pre ...

  10. 01-jQuery基本语法

    一.jQuery基础 1.为什么要用jquery? 写起来简单,省事,开发效率高,兼容性好2.什么是jQuery? jQuery是一个兼容多浏览器的JavaScript库(类似python里面的模块) ...