el-table懒加载树形数据,实现整行点击的展开

news/2024/7/24 9:32:04 标签: elementui

做项目遇到一个需求,根据集团层级展现一组数据,每个层级都可以点开看更详细的拆分数据,第一想法是用el-table的树形数据来展示,大概下面这个样子:

用过这个组件的应该知道这个只能通过点击每一行前面的小箭头实现伸缩,箭头有点小,而且表格一行的数据很长时,对用户的操作不是很友好,所以想能够点击一行的任意位置都可以进行伸缩。

1、官网中的toggleRowExpansion方法如下:

<el-table
    :data="tableData"
    ref="refTable"
    style="width: 100%"
 @row-click="expandChange"
>
</el-table>

expandChange(row,index,e){
      this.$refs.refTable.toggleRowExpansion(row)
 }

但是项目中由于数据量比较大,用了懒加载,即每次点击的时候都会去请求load接口,才能渲染下层数据,这种情况下如果没请求下级,组件的toggleRowExpansion就不好用了。

2、继续搜索,发现有一种修改css的方法,通过拉宽下拉箭头的覆盖区域实现,参见这个https://segmentfault.com/q/1010000038968399

但还是有2个问题,一个是看不到箭头了,二是只能通过点击第一列的文字实现,还是不符合预期。

3、最终通过原生的方法找到箭头的dom元素,触发一次click事件,具体实现方式如下:

<el-table 
    :data="detailData" 
    row-key="id" 
    lazy 
    :load="load" 
    :tree-props="{ children: 'children', hasChildren: 'hasChildren'}" 
    @row-click="(row,column,e)=>clickRowLoad(row,column,e)">
</el-table>


//点击整行load
clickRowLoad(r, c, e){
    console.log(e.currentTarget)
    if(e.currentTarget.firstElementChild.firstElementChild.firstElementChild.tagName=='DIV'){
      e.currentTarget.firstElementChild.firstElementChild.firstElementChild.click()
    } else {
      e.currentTarget.firstElementChild.firstElementChild.firstElementChild.nextElementSibling.click()
    }
  },


http://www.niftyadmin.cn/n/1846044.html

相关文章

Java并发专题 带返回结果的批量任务执行 CompletionService ExecutorService.invokeAll(转)...

转载请标明出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/27250059 一般情况下&#xff0c;我们使用Runnable作为基本的任务表示形式&#xff0c;但是Runnable是一种有很大局限的抽象&#xff0c;run方法中只能记录日志&#xff0c;打印&#xff0c;或者…

OpenGL ES 绘制纹理

在OpenGL ES中绘制一张图片需要使用到纹理&#xff08;texture&#xff09;&#xff0c;绘制纹理步骤如下&#xff1a; 编写shader 绘制纹理的shader需要顶点数据、纹理顶点数据和纹理。Vertex Shader代码如下&#xff1a; attribute vec4 a_Position; attribute vec2 a_TexCoo…

[WebGL入门]十四,绘制多边形

注意&#xff1a;文章翻译http://wgld.org/。原作者杉本雅広(doxas)&#xff0c;文章中假设有我的额外说明&#xff0c;我会加上&#xff3b;lufy&#xff1a;&#xff3d;。另外&#xff0c;鄙人webgl研究还不够深入。一些专业词语&#xff0c;假设翻译有误&#xff0c;欢迎大…

[前端面试套餐css+js+vue+es6]第八天

前端面试套餐css&#xff1a;如何实现两栏布局&#xff0c;右侧自适应&#xff1f;三栏布局中间自适应呢&#xff1f;两栏布局BFCfloatflex弹性布局三栏布局两边使用float&#xff0c;中间使用margin两边使用absolute&#xff0c;中间使用margin两边使用float和负margindisplay…

C语言成长学习题(十七)

81.调用函数,完成单向动态链表的建立,输出各结点的值. 1 #include <stdio.h>2 #include <stdlib.h>3 4 typedef struct lst5 {6 int num;7 struct lst *next;8 }LST;9 10 LST *mycreat () 11 { 12 int m; 13 LST *head, *p, *q; 14 15 head …

异常(补充)

总结 异常是什么&#xff1f;是对问题的描述。将问题进行对象的封装。 异常体系&#xff1a; ​ ​Throwable ​ ​ ​ ​ |--Error ​ ​ ​ ​ |--Exception ​ ​ ​ ​ ​ ​ ​|--RuntimeException 异常体系的特点&#xff1a;异常…

redis集群部署(redis-cluster)

什么是redis集群&#xff1f;Redis 集群是一个分布式&#xff08;distributed&#xff09;、容错&#xff08;fault-tolerant&#xff09;的 Redis 实现&#xff0c; 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集&#xff08;subset&#xff09;。Redis 集群中…

warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY

warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEYDownloading Packages:warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 7fac5991: NOKEY Public key for google-chrome-stable_current_i386.rpm is not installed 两种…