• 【ElementUI优化】el-table展开行 ==> :expand-row-keys=“expands“ 刷新表格,保存当前操作展开行


    于极迷处识迷 则处处醒,将难放怀一放 则万境宽。

    目录

    一、el-table展开行(基础 可跳过)

    1. 展示tag信息

     2. 实现添加功能

    问题:

    二、控制el-table展开行(核心)

    1.expand-row-keys

    2.在添加时更新expands


     效果比较:

     修改前:刷新表格,展开行消失  ==>   修改后:刷新表格,保存当前操作展开行。

     


    一、el-table展开行(基础 可跳过)

    参考element UI:Element - The world's most popular Vue UI framework

    通过设置 type="expand" 和 Scoped slot 可以开启展开行功能,el-table-column 的模板会被渲染成为展开行的内容,展开行可访问的属性与使用自定义列模板时的 Scoped slot 相同。

    1. 展示tag信息

     效果:每行组合数据展示包含的产品名称信息。后端返回的数据结构如下:

    1. <el-table v-loading="loading" stripe :data="groupList">
    2. <el-table-column type="expand" prop="productData">
    3. <template slot-scope="scope">
    4. <div class="tag-content">
    5. <div
    6. class="tag-item"
    7. :key="tag.prdtName"
    8. v-for="tag in scope.row.productData"
    9. >
    10. <el-tag closable style="margin: auto" type="danger">{{
    11. tag.prdtName
    12. }}el-tag>
    13. div>
    14. div>
    15. template>
    16. el-table-column>
    17. <el-table-column label="序号" prop="index" width="55">
    18. <template slot-scope="scope">
    19. <span>{{ scope.$index + 1 }}span>
    20. template>
    21. el-table-column>
    22. <el-table-column label="组合编号" align="center" prop="groupCode" />
    23. <el-table-column label="组合名称" align="center" prop="groupName" />
    24. <el-table-column label="产品个数" align="center" prop="productNum" />
    25. el-table>

    至此可以完成全部tags的展示,且满足样式要求一行只展示三个。

    1. .tag-item {
    2. width: 33%;
    3. margin-bottom: 10px;
    4. display: flex;
    5. justify-content: center;
    6. }

     2. 实现添加功能

     只需要在刚才代码的后面添加tag实现新增功能即可

    1. <div class="tag-item">
    2. <el-button
    3. class="button-new-tag"
    4. size="small"
    5. @click="AddProduct(scope.row)"
    6. >+ 新产品
    7. >
    8. div>

    addProduct()函数中主要:显示dialog==> 清空弹框form表单

    问题:

    功能已经实现,但是每次操作之后el-table的展开行都关闭了这样用户体验很不友好。这是el-table不是很友好的地方,每次页面刷新都会默认关闭所有的行。

    希望:对于每次展开行的操作,操作之后该行继续展开。


    二、控制el-table展开行

     1.expand-row-keys

    expand-row-keys: 可以通过该属性设置 Table 目前的展开行,需要设置 row-key 属性才能使用,该属性为展开行的 keys 数组。

     实现思路:创建一个expends数组,用于存储展开的keys。每次点击添加时,将该行的id存放进去。

    只需要给table添加如下两行代码

    1. row-key="id"
    2. :expand-row-keys="expands"

    2.在添加时更新expands

    在AddProduct()时记录下当前的行id

    1. // 添加产品对话框
    2. AddProduct(row) {
    3. this.open = true;
    4. this.groupId = row.id;
    5. // 表格置空
    6. this.form = {};
    7. // console.log(this.expands, "[[[[[[expends]]]]]]]]]");
    8. this.expands = [];
    9. this.expands.push(row.id);
    10. // console.log(this.expands, "[[[[[[expends]]]]]]]]]");
    11. },

    当然expends可以记录数组,以上只希望记录并保存选中添加行的展开状态。可以根据需要进行修改。

  • 相关阅读:
    Java并发编程--变量可见性、避免指令重排,还得是用它
    使用CDC模式改造遗留系统
    OpenCascade模型导入与导出及Shap的读写
    竞赛 : 题目:基于深度学习的水果识别 设计 开题 技术
    小说网站,小说阅读器,小说阅读网站毕业设计
    IO进线程:消息队列
    redis的雪崩、穿透、击穿解析
    webpack loader 用于对模块的源代码进行转换
    TSI系统测量参数之:转速和零转速
    云上本地化运营,东非第一大电商平台Kilimall的出海经
  • 原文地址:https://blog.csdn.net/Sabrina_cc/article/details/126104254