VUE3子表格嵌套分页查询互相干扰的问题解决
VUE3在表格中嵌套子表格
子表格的分页查询互相干扰的问题解决
简单嵌套
如果不需要做子表格的分页查询,那么可以直接在主表格中嵌套子表格,有两种方式;一种是主表格加载的同时加载子表格数据,另一种是点击展开时加载子表格数据,尽量使用第二种方式;代码如图1-1所示;
图1-1
我们可以看到在el-table控件中增加了一列<el-table-column type="expand">,这里的expand表示为展开类型,然后再嵌套了一个子表格,这个子表格就是列展开后的数据,这样我们就嵌套完成了,效果如图1-2所示;
注:这里过于简单,我直接引用官网上的示例,感兴趣的可以前往查看:
https://element-plus.org/zh-CN/component/table.html
图1-2
子表格分页查询
在做这个功能的过程中,我遇到了以下几个问题:
1、展开时查询没问题,但是切换页面与改变容量时无法赋值;
2、查询过程中子表格共用一个加载变量,导致我展开一个子表格时另外的已展开的子表格会同时“转圈圈”;
3、子表格共用一套分页参数,导致一个子表格切换页面时,其他子表格也跟着切换;我们一个一个来解决这些问题;
- 切换页面与改变容量时,我们会触发el-pagination控件的size-change事件以及current-change事件,查看官方文档得知这两个事件都只有一个number类型的参数,这里我们需要自己传入参数,那就是主表的当前行(props.row),我们把行数据传过去之后,才能给行的子表格这一个属性赋值,如图2-1所示;
图2-1
注:这里的props是图2-2在代码中定义了的;
图2-2
这样我们的数据在查询出来之后可以直接把值赋给row.detail,如图2-3所示;
图2-3
这样我们解决了无法给子表格直接赋值的问题,这里的解决方案主要是给el-pagination控件的size-change以及current-change事件手动传入当前主表的行数据(props.row)。
- 其实第2个问题与第3个问题如出一辙,都是因为多个控件共用了同一个参数导致的互相干扰,很明显这样是不行的;所以我们只要想办法解决共用参数的问题就好了,我们可以发现,其实子表格数据本身就是一个例子,多个子表格,用“同一个变量”(props.row.detail)来赋值,那是不是我们的分页参数也可以在主表格中占一个位置,当作参数使用呢,这样主表每一行里面的子表格中的loading以及分页参数自然就互不干扰了;
图2-4为主表格中添加的列,我们用v-if来隐藏;
图2-4
然后在分页查询事件触发的时候,与行参数一并传入了子表格查询方法(childQuery)中,第一次查询使用默认参数,每次查询最后都保存后端分页参数的结果,第二次开始后直接使用上次保存的分页参数查询即可,这样就可以解决【分页参数】互相干扰的问题,同样,isLoading参数也是每次使用当前row的isLoading,这样自然就不会互相干扰,代码如图2-5所示;
图2-5
接下来我们看一下效果图:
正常展开效果图:
图2-6
多子表展开效果图:
图2-7
图2-8
换页效果图:
图2-9
至此,问题解决,这是我自己探索出来的解决方案,肯定不是最好的解决方案,如果有更好的方法,欢迎一并探讨,感谢阅读!
VUE3子表格嵌套分页查询互相干扰的问题解决的更多相关文章
- Oracle三层嵌套分页查询示例及rownum原理
eg:COMPONENT表数据如下 1.执行select * from (select com.*,rownum r_num from (select * from COMPONENT)com w ...
- oracle分页查询及原理分析(总结)
oracle分页查询及原理分析(总结) oracle分页查询是开发总为常用的语句之一,一般情况下公司框架会提供只需套用,对于增删改查而言,查是其中最为关键也是最为难的一块,其中就有使用率最高的分页查询 ...
- layui的laypage实现分页/查询
最开始我的数据绑定使用的razor语法来绑定的 就像下面这样 @if (ViewBag.listBlog != null) { foreach (var item in ViewBag.listBlo ...
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...
- MySQL——优化嵌套查询和分页查询
优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中.嵌套查询写起来简单,也容易理解.但是,有时候可以被更有效率的连接(JOIN ...
- Oracle子查询相关内容(包含TOP-N查询和分页查询)
本节介绍Oracle子查询的相关内容: 实例用到的数据为oracle中scott用户下的emp员工表,dept部门表,数据如下: 一.子查询 1.概念:嵌入在一个查询中的另一个查询语句,也就是说一个查 ...
- 数据库SQL Server2012笔记(四)——多表查询、子查询、分页查询、用查询结果创建新表和外连接
1.多表查询 1)笛卡尔集: select * from 表名1,表名2 select * from 表名1.表名2 where 表名1.字段名=表名2.字段名 注: 若有两张表有同 ...
- DQL---连接查询(内连接、外连接)、子查询、分页查询
一.连接查询 1.连接查询建立在有相互关系的两个表间,进行两个及两个以上的表或视图的查询. 2.对n张表进行查询,至少需要n-1个连接表的条件. 二.笛卡尔积(容易造成数据库宕机) 1.指表中每行元素 ...
- MySQL进阶8 分页查询(limit) - 【SQL查询语法执行顺序及大致结构】- 子查询的3个经典案例
#进阶8 分页查询 /* 应用场景: 当要显示的数据,一页显示不全,需要分页提交sql请求 语法: select 查询列表 #7 from 表1 #执行顺序:#1 [join type join 表2 ...
- (五)连接查询(SQL99标准)、子查询、分页查询、联合查询
一.连接查询(SQL99标准) 1.含义:当要查询的数据来自多张表时要使用连接查询 2.语法: select 查询列表 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 [wh ...
随机推荐
- three.js项目引入vue,因代码编写不当导致的严重影响性能的问题,卡顿掉帧严重
three.js项目引入vue,因代码编写不当导致的严重影响性能的问题,卡顿掉帧严重 问题排查 使用谷歌浏览器的Performance分析页面性能 可以看到vue.js的reactiveGetter方 ...
- 区间DP练习题题解
算法讲解:Here AcWing 282. 石子合并 (模板) 题目链接:Here const int N = 310; int a[N], s[N]; int dp[N][N]; void solv ...
- 前端科普系列(4):Babel —— 把 ES6 送上天的通天塔
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/plJewhUd0xDXh3Ce4CGpHg作者:Morrain 一.前言 在上一节 < ...
- 2021 VDC :vivo 互联网服务亿级用户的技术架构演进之路
关注公众号[vivo互联网技术]--回复[2021VDC]获取大会PPT. 2021年12月16日,vivo 开发者大会圆满落幕.在互联网技术专场中,来自vivo 互联网技术的6位研发专家,从基础架构 ...
- vue 状态管理 五、Module用法
系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...
- uni-app实现登录功能
https://www.bilibili.com/video/BV1jy4y1B7pw?p=140&spm_id_from=pageDriver uniapp封装request,设置请求头与t ...
- freeswitch新增模块APP
概述 之前的文章中,我们讲解了freeswitch的源码基本结构,如何新增一个插件式模块,以及如何在模块中新增一个命令式API接口. freeswitch的架构非常适合这种业务开发模式,即以frees ...
- Linux环境下如何查看Python版本号
方法一.直接执行命令python,就可以查看python的版本信息. 退出用exit() 方法二.利用命令python -V,注意V要大写. 方法三.利用命令whereis python,注意wher ...
- 机器学习-无监督机器学习-kmeans-17
目录 1. 什么是聚类 2. 代码实现 1. 什么是聚类 无监督机器学习的一种 输入数据只有X 没有y 将已有的数据 根据相似度 将划分到不同的簇 (花团锦簇) 步骤: 随机选择k个簇的中心点 样本根 ...
- 笔记本也能飞:运行chat大模型
背景 在过去的一年,ChatGPT的崛起彻底改变了我们与AI的交互方式.它不再是被动的信息提供者,而是成为了一个可以与我们自由交流.分享知识的伙伴.无论是生活中的琐事,还是工作中的难题,ChatGPT ...