Element el-table树形数据 tree-props使用注意事项

el-table树形数据 tree-props使用注意事项

项目场景:

项目场景:使用el-table树形数据

在这里插入图片描述

问题描述:

根据element官网提示设置tree-props{children: 'children',hasChildren: 'hasChildren'}data数据也设置了childrenhasChildren属性,row-key也绑定了数据的唯一值变量id,但是树形结构就是出不来
在这里插入图片描述
在这里插入图片描述


# 原因分析:

找了很久的问题原因,发现是因为设置tree-props{children: 'children',hasChildren: 'hasChildren'},就误以为需要childrenhasChildren两个属性,因此同时给数据设置了childrenhasChildren属性,导致树形结构出不来


解决方案:

  • data绑定的数据需要保留children属性,注意childrenhasChildren属性不能同时存在
<template>
<div>
  <el-table
    :data="tableData"
    style="width: 100%;margin-bottom: 20px;"
    row-key="id"
    border
    default-expand-all
    :tree-props="{children: 'children',hasChildren: 'hasChildren'}">
   <el-table-column prop="id" label="11" > </el-table-column>
    <el-table-column prop="name" label="22"></el-table-column>
    <el-table-column prop="planQuantity"  label="33"></el-table-column>
  </el-table>
</div>
</template>
<script>
export default {
    data() {
      return {
			 tableData: [
        {
          id: 523,
          name: '我是一级',
          planQuantity: 50,
          children: [
            {
              id: 527,
              name: '我是二级',
              planQuantity: 20,
              children:null
            }
          ],
        }
       ]
		}
    }
}
</script>

效果图:
在这里插入图片描述

写在最后

该文章主要记录遇到的问题及解决办法,避免忘记,若有不足之处或其他解决办法欢迎指教

### el-table 树形数据勾选实现方式 对于 `el-table` 的树形数据显示与勾选功能,Element Plus 提供了一套完整的解决方案来处理复杂的数据结构。为了使表格能够展示并操作树状层次关系的数据,需设置特定属性。 #### 属性配置 - **row-key**: 设置每一行唯一标识符字段名,用于识别节点间的父子关系[^1]。 - **tree-props**: 定义子级 children 字段名称,默认为 "children"。 - **default-expand-all**: 是否默认展开所有行,适用于初次加载时全部显示细节信息。 - **show-checkbox**: 显示多选框列,允许用户选择多个条目。 当涉及到树形数据的选择逻辑时,还需要考虑父节点与其子节点之间的联动效果: - 如果希望父节点被选中则自动全选其下所有的子孙节点,则可以监听 `selection-change` 事件,在回调函数内遍历当前选中的项,并手动调用 `toggleRowSelection(row, selected)` 来控制关联节点的状态变化。 下面是一个简单的例子展示了如何创建带有复选框的可扩展树表单: ```html <template> <div> <el-table :data="tableData" style="width: 100%" row-key="id" default-expand-all show-checkbox @selection-change="handleSelectionChange"> <!-- 列定义 --> <el-table-column type="selection" width="55"></el-table-column> <el-table-column prop="name" label="Name"></el-table-column> ... </el-table> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; const tableData = [ { id: 1, name: 'Parent Node', children: [{ id: 2, name: 'Child Node' }] } ]; function handleSelectionChange(selection) { console.log('Selected:', selection); } </script> ``` 此代码片段实现了基本的功能需求,即通过指定 `row-key`, `tree-props` 及其他必要参数让 `el-table` 支持树型结构的同时提供复选项让用户可以选择任意数量的记录;并通过自定义的方法响应用户的交互行为,如点击某一行前面的小方块触发整个分支或者仅该叶子结点的选取状态改变。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值