el-table解决数据过少小于高度有留白的问题

问题:给el-table设置个高度,高度为500px,之后就添加如下4条数据,那么底部就没数据,直接就空白了,本文章就是为了解决这个问题,如果底部留白那么就添加几条空数据就行了.如果数据已达到高度了那么就不会留白了

1.效果

这个空列可以根据高度来决定添加几个空格子去铺满列表,解决列表留白问题

 2.主要代码讲解

2.1为了不影响原始数据,建议在获取到接口列表数据后存入到俩个变量中,一个作为展示一个作为判断添加几行空数据,

        addTable() {
            // 这边就是调用列表的接口之后数据展示
            this.tableData = [
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普'
                },
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                }
            ];
            this.tableDataFilter = [
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普'
                },
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                }
            ];
            this.$nextTick(() => {
                this.handleTableResize();
            });
        }

2.2监听页面高度发生变化后,需要判断展示几行空数据。

    window.addEventListener('resize', this.handleTableResize); // 监听页面尺寸变化

2.3给每行设置固定的高度,必须要固定死,不然就判断失误了,如果内容过多可以设置show-overflow-tooltip

.el-table /deep/ .el-table__row {
    height: 50px;
}

2.4 关键代码

设置个tableHeight:初始值为0

整个表格的高度,给el-table绑定一个ref,名字叫algorithmRef

this.$refs.algorithmRef.$el.clientHeight

整个表格还剩下的留白的高度,这个-100是减去表头,-50是上面设置的一行的高度之后,50 * this.tableDataFilter.lengt,这个就是有数据的行高度,最后得出表格剩下留白高度

  height = this.tableHeight - 100 - 50 * this.tableDataFilter.length;

 result:要添加几行空白给表格数据

最后把空数据添加到tableData中

    getTableHeight() {
            this.tableHeight = this.$refs.algorithmRef.$el.clientHeight;
            let height = 0;
            height = this.tableHeight - 100 - 50 * this.tableDataFilter.length;
            const result = Math.floor(height / 50);
            this.tableAdd(result);
            console.log(result, '要传给tableAdd的值'); 
        },
        tableAdd(num) {
            let addTable = [];
            for (let i = 0; i < num; i++) {
                addTable.push({ date: '', name: '', address: '' });
            }
            this.tableData = [...this.tableDataFilter, ...addTable];
        },

3.完整代码

<!--
 * @Descripttion: el-table解决数据过少小于高度有留白的问题
 * @version:
 * @Author: 请叫我欧皇i
 * @email: 13071200550@163.com
 * @Date: 2023-11-13
-->

<template>
    <div class="container-table" ref="paramRef">
        <el-button @click="addTable()">添加</el-button>
        <div class="table-box">
            <el-table
                border
                :cell-style="{ borderColor: '#C0C0C0' }"
                :header-cell-style="{ borderColor: '#c0c0c0' }"
                :data="tableData"
                stripe
                height="100%"
                @resize="handleTableResize"
                style="width: 100%"
                ref="algorithmRef"
                class="tablebox"
            >
                <el-table-column show-overflow-tooltip label="自动数据" align="center">
                    <el-table-column prop="date" label="日期" width="180"> </el-table-column>
                    <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
                </el-table-column>
                <el-table-column label="人工数据" align="center">
                    <el-table-column prop="address" label="地址"> </el-table-column>
                    <el-table-column prop="date" label="日期" width="180"> </el-table-column>
                    <el-table-column prop="name" label="姓名" width="180"> </el-table-column>
                </el-table-column>
            </el-table>
        </div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            tableData: [],
            tableDataFilter: [],
            tableHeight: 0 // 行高
        };
    },
    mounted() {
        // setTimeout(() => {
        // }, 1000);
        this.$nextTick(() => {
            this.getTableHeight(); // 监听el-table尺寸变化事件,重新获取表格高度
            window.addEventListener('resize', this.handleTableResize); // 监听页面尺寸变化
        });
    },
    methods: {
        handleTableResize() {
            this.$nextTick(() => {
                this.getTableHeight(); // 监听el-table尺寸变化事件,重新获取表格高度
            });
            // this.tableHeight = this.$refs.dynamicTable.$el.clientHeight;
            // console.log();
        },
        getTableHeight() {
            this.tableHeight = this.$refs.algorithmRef.$el.clientHeight;
            let height = 0;
            // 留白的高度
            height = this.tableHeight - 100 - 50 * this.tableDataFilter.length;
            const result = Math.floor(height / 50);
            this.tableAdd(result);
            console.log(result, '要传给tableAdd的值');
        },
        tableAdd(num) {
            let addTable = [];
            for (let i = 0; i < num; i++) {
                addTable.push({ date: '', name: '', address: '' });
            }
            this.tableData = [...this.tableDataFilter, ...addTable];
        },
        handlePageResize() {
            this.$nextTick(() => {
                this.getTableHeight(); // 页面尺寸变化后重新获取表格高度
            });
        },
        addTable() {
            // 这边就是调用列表的接口之后数据展示
            this.tableData = [
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普'
                },
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普'
                }
            ];
            this.tableDataFilter = [
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普'
                },
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-02',
                    name: '王小虎',
                    address: '上海市普陀'
                },
                {
                    date: '2016-05-04',
                    name: '王小虎',
                    address: '上海市普'
                }
            ];
            this.$nextTick(() => {
                this.handleTableResize();
            });
        }
    }
};
</script>

<style lang="scss" scoped>
.container-table {
    height: 70vh;
    width: 890px;
    background-color: #fff;
    .table-box {
        height: 70%;
        width: 100%;
    }
}
::v-deep .el-table .el-table__body--striped .el-table__row:nth-child(even) {
    background-color: #f7f7f7; /* 设置偶数行的背景色 */
}
.tablebox {
    border: 1px solid #c0c0c0;
}
/deep/ .el-table::after {
    width: 0;
}
/deep/ .el-table::before {
    height: 0;
}

// 这是关键,设置表格的每一行的高度,必须要固定死,如果内容过多可以设置show-overflow-tooltip
.el-table /deep/ .el-table__row {
    height: 50px;
}
/deep/ .el-table tbody tr td:nth-child(5),
/deep/ .el-table thead tr th:nth-child(5) {
    border-right: none;
}
/deep/ table thead tr:first-of-type th:nth-child(2) {
    border-right: none;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/138389.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE基础必学系列:项目和文件结构

官方文档:https://learn.unrealengine.com/course/ 张佳亮:UE4插件相关说明文档 1、uproject,以商城下载的ActionRPG为例 {"FileVersion": 3,"EngineAssociation": "4.20","Category": "Samples","Description&qu…

Springboot+vue的人力资源管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的人力资源管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的企业资产管理系统&#xff0c;采用M&#xff08;model&…

SystemC 学习之 VCS 仿真工具安装(八)

1、安装包下载 vcs、verdi 等工具下载地址&#xff08;如果下载链接失效&#xff0c;可以私信我&#xff09; 链接&#xff1a;https://pan.baidu.com/s/19CtwqWcxpv-4wPyAD4_ITw 提取码&#xff1a;3pib vcs-mx 下载地址 链接&#xff1a;https://pan.baidu.com/s/1dYELrG…

如何选择共享wifi项目服务商,需要注意哪些?

在移动互联网时代&#xff0c;无线网络已经成为人们生活中不可或缺的一部分。随着5G时代的到来&#xff0c;共享WiFi项目成为了市场上备受关注的焦点。在众多共享WiFi公司中&#xff0c;如何选择共享wifi项目服务商合作&#xff0c;今天我们就来盘点下哪些公司可靠&#xff01;…

Java实现一个简单的贪吃蛇小游戏

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为贪吃蛇。 其次在贪吃蛇项目下创建一个名为images的文件夹用来存放游戏相关图片。 用到的图片如下&#xff1a; 游戏标题&#xff1a; 贪吃蛇的身体&#xff1a; 贪吃蛇的头部&#xff1a; 因为要向四个方向移动&am…

【Proteus仿真】【STM32单片机】停车场车位管理系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用按键、LED、蜂鸣器、LCD1602、红外传感器、74HC595模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示进入、驶出、剩余车位数…

TikTok与心灵成长:娱乐与启发并重

社交媒体已成为我们生活的一部分&#xff0c;其中TikTok以其短视频内容和创新性而闻名。然而&#xff0c;TikTok不仅仅是一个娱乐平台&#xff0c;它还具有潜力成为心灵成长的有力工具。本文将探讨TikTok如何在娱乐与启发之间取得平衡&#xff0c;以促进心灵成长和积极影响。 娱…

Kotlin Multiplatform稳定版本发布:加速跨平台开发的新里程碑

Kotlin Multiplatform稳定版本发布&#xff1a;加速跨平台开发的新里程碑 引言 在最新的消息中&#xff0c;JetBrains团队宣布Kotlin Multiplatform&#xff08;KMP&#xff09;将于2023年10月稳定发布。这一消息对于广大开发者来说毫无疑问是一个令人振奋的消息。KMP的正式生…

Spring Data JPA方法名命名规则

最近巩固一下JPA&#xff0c;网上看到这些资料&#xff0c;这里记录巩固一下。 一、Spring Data Jpa方法定义的规则 简单条件查询 简单条件查询&#xff1a;查询某一个实体类或者集合。 按照Spring Data的规范的规定&#xff0c;查询方法以find | read | get开头&…

2020年五一杯数学建模C题饲料混合加工问题解题全过程文档及程序

2020年五一杯数学建模 C题 饲料混合加工问题 原题再现 饲料加工厂需要加工一批动物能量饲料。饲料加工需要原料&#xff0c;如加工猪饲料需要玉米、荞麦、稻谷等。加工厂从不同的产区收购了原料&#xff0c;原料在收购的过程中由于运输、保鲜以及产品本身属性等原因&#xff…

比尔·盖茨谈他对软件应用和人工智能代理未来的见解

比尔盖茨在他的 Gatesnotes 网站中发表了一篇文章&#xff0c;分享了他对软件应用和人工智能代理未来的见解。他认为人工智能代理将大行其道&#xff0c;在接下来的五年里&#xff0c;这将完全改变。你不需要为不同的任务使用不同的应用程序。你只需用日常语言告诉你的设备你想…

C++编程案例讲解-评委打分案例

评委打分案例 案例说明 案例说明 有5名选手&#xff0c;10个评委分别对每一名选手打分&#xff0c;去除最高分&#xff0c;去除最低分&#xff0c;取平均分 要求以下步骤&#xff1a; 创建5名选手&#xff0c;放到vector中遍历vector容器&#xff0c;取出来每一位选手&#x…

SMART PLC 和S7-1200PLC MODBUSTCP通信速度测试

SMART PLC MODBUSTCP通信详细介绍请参看下面文章链接: S7-200SMART PLC ModbusTCP通信(多服务器多从站轮询)_matlab sumilink 多个modbustcp读写_RXXW_Dor的博客-CSDN博客文章浏览阅读6.4k次,点赞5次,收藏10次。MBUS_CLIENT作为MODBUS TCP客户端通过S7-200 SMART CPU上的…

SharePoint-连接Excel

Power Automate和Power Apps想要连接Excel表格的话&#xff0c;可以在OneDrive或SharePoint网站的文档中创建Excel文件&#xff0c;然后把Excel转换成table表格 以SharePoint为例&#xff0c;在文档中点击新建&#xff0c;选择Excel工作簿 填写内容&#xff0c;然后全选选中 在…

SPSS因子分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

hive里因为列名用了关键字导致建表失败

代码 现象 ParseException line 6:4 cannot recognize input near percent String COMMENT in column name or primary key or foreign key 23/11/13 11:52:57 ERROR org.apache.hadoop.hive.ql.Driver: FAILED: ParseException line 6:4 cannot recognize input near percent …

消防安全检查卡如何制作成二维码标签

消防安全检查卡介绍 消防安全检查卡是用来评估建筑物和场所的消防安全情况的工具。本检查卡旨在帮助用户检查建筑设施和操作程序&#xff0c;以确保其符合消防安全标准&#xff0c;预防火灾事故的发生。 日常的消防器材巡检卡 主要用于规范和记录消防器材的日常检查工作&#x…

「得力集团」启动采购供应链协同项目,携手企企通打造文创科技产业行业标杆

近期&#xff0c;国内最大的办公与学习用品产业集团、多工作场景整体解决方案的领导者「得力集团有限公司」与企企通成功签约&#xff0c;并顺利召开采购供应链协同项目启动会。 本次会议中&#xff0c;双方高层领导与项目团队成员就项目的功能需求、实施方案、资源支持等问题进…

测量均值频率、功率、带宽

测量均值频率、功率、带宽 生成以 1024 kHz 采样的啁啾信号的 1024 个采样点。啁啾信号的初始频率为 50 kHz&#xff0c;采样结束时达到 100 kHz。添加高斯白噪声&#xff0c;使信噪比为 40 dB。 nSamp 1024; Fs 1024e3; SNR 40;t (0:nSamp-1)/Fs;x chirp(t,50e3,nSamp/…

无代码业务自动化工具Activepieces

什么是 Activepieces &#xff1f; Activepieces 是一款工作流程自动化软件&#xff0c;可以帮助您自动化所有重要流程&#xff0c;例如市场、销售、营销等。您可以集成其他有用的应用程序并更有效地管理您的业务。无需编码&#xff0c;是 Zapier 的绝佳替代品。 Activepieces …