40、使用elementUI分别实现前端,后端表格分页

说明:前端单独做的表格分页—用于解决数据过多页面渲染压力,如果是服务器响应数据过慢,使用第二种分页方法–后端分页。以下为分页效果

在这里插入图片描述

一、前端分页

1、创建表格

<el-table:key="new Date().getTime()":data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"row-key="id"ref="table"style="width: 100%"><template v-for="(item, idx) in tableHead"><el-table-column:key="item.key":prop="item.value":label="item.name"align="center"></el-table-column></template></el-table>

说明:slice(a,b)的作用是从已有的数组中返回选定的元素"a"表示开始,"b"表示结束。 而currentPage和pageSize在此网页的作用会在接下来进行说明。

2、创建分页

<el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange":current-page="currentPage" :page-sizes="[1,5,10,20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.length">
</el-pagination>

在这里插入图片描述

说明分页器绑定变量说明:

:current-page的值表示当前是第几页;
:page-sizes的值表示可以选择一页多少条;
:page-size的值表示当前一页显示几条;
layout的值表示分页需要显示的内容,例如“total” 表示总数、“next” 表示下一页等;
:total的值表示共多少条数据;
根据变量pageSize值,以及当前页变量currentPage,在界面上会自动把分的页显示出来,如上图中的:1、2、3……6…。

3、在data中定义变量

data() {return {tableData: [],tableHead: [{name: "母线名称", value: 'busName',  },{name: "电压等级", value: 'voltageLevel',  },{name: "开始时间", value: 'startDate', },{name: "恢复时间", value: 'recoverDate',  },{name: "持续时间(分钟)", value: 'continuedDate', },{name: "越限类型", value: 'limitType',  },{name: "越限极值", value: 'limitValue',  },],currentPage: 1, // 当前页码total: 20, // 总条数pageSize: 2, // 每页的数据条数};},

4、 添加事件

methods: {//每页条数改变时触发 选择一页显示多少行handleSizeChange(val) {console.log(`每页 ${val}`);this.currentPage = 1;this.pageSize = val;},//当前页改变时触发 跳转其他页handleCurrentChange(val) {console.log(`当前页: ${val}`);this.currentPage = val;}
}

5、完整前端分页代码展示

<template><div class="v-table" ref="tableheight" style="width: 100%; height: 100%"><el-table:key="new Date().getTime()":data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"row-key="id"ref="table"style="width: 100%;height: calc(100% - 60px)"><template v-for="(item, idx) in tableHead"><el-table-column:key="item.key":prop="item.value":label="item.name"align="center"></el-table-column></template></el-table><!-- 分页器 --><div class="block-box"><el-pagination align='center'@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[1,5,10,20]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="tableData.length"></el-pagination></div></div>
</template><script>export default {data() {return {tableData: [{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },],tableHead: [{name: "母线名称", value: 'busName',  },{name: "电压等级", value: 'voltageLevel',  },{name: "开始时间", value: 'startDate', },{name: "恢复时间", value: 'recoverDate',  },{name: "持续时间(分钟)", value: 'continuedDate', },{name: "越限类型", value: 'limitType',  },{name: "越限极值", value: 'limitValue',  },],currentPage: 1, // 当前页码total: 20, // 总条数pageSize: 2, // 每页的数据条数};},mounted() {},methods: {// 表格分页---前端分页//每页条数改变时触发 选择一页显示多少行handleSizeChange(val) {this.currentPage = 1;this.pageSize = val;},//当前页改变时触发 跳转其他页handleCurrentChange(val) {this.currentPage = val;},}};
</script><style lang="less">.v-table {//分页样式.block-box{width: 100%;height: 50px;margin-top: 10px;display: flex;justify-content: center;align-items: center;}}
</style>

二、后端分页

后端分页就是,根据前端所给后端传的两个参数处理判断响应数据,第一参数:每一页多少条数据pageSize,第二个参数:当前所选中的页码currenPage,进行

说明:表格模板代码以及分页器代码创建步骤同上,唯一不同就是总表格数据条数:total不就是后端响应的表格数据长度,需要后端另外返回表格数据总数;否则分页器只显示第1页。

1、js代码

methods: {//表格分页操作//每页条数改变时触发 选择一页显示多少行handleSizeChange(val){this.pageSize = val;this.params = {pageSize:this.pageSize,currentPage:this.currentPage,}this.getDialogData(val,this.currentPage,this.dialogTableUrl, this.params);},//当前页改变时触发 跳转其他页handleCurrentChange(val){this.currentPage = val;this.params = {pageSize:this.pageSize,currentPage:this.currentPage,}this.getDialogData(this.pageSize,val,this.dialogTableUrl, this.params);},getDialogData(pageSize,currentPage,url, params) {getRequestData(url, 'get', params).then((res) => {if (res.status == 200){let data = res.data.data;this.total = data.num;//总数据条数this.tableData = data.list}})},
}

3.完整后端分页代码

<template><div class="v-table" ref="tableheight" style="width: 100%; height: 100%"><el-table:key="new Date().getTime()":data="tableData"row-key="id"ref="table"style="width: 100%;height: calc(100% - 60px)"><template v-for="(item, idx) in tableHead"><el-table-column:key="item.key":prop="item.value":label="item.name"align="center"></el-table-column></template></el-table><!-- 分页器 --><div class="block-box"><el-pagination align='center'@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[1,5,10,20]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination></div></div>
</template><script>export default {data() {return {tableData: [{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },{busName:"xxx",voltageLevel:"",startDate:"",recoverDate:"",continuedDate:"",limitType:"",limitValue:"",  },],tableHead: [{name: "母线名称", value: 'busName',  },{name: "电压等级", value: 'voltageLevel',  },{name: "开始时间", value: 'startDate', },{name: "恢复时间", value: 'recoverDate',  },{name: "持续时间(分钟)", value: 'continuedDate', },{name: "越限类型", value: 'limitType',  },{name: "越限极值", value: 'limitValue',  },],currentPage: 1, // 当前页码total: 20, // 总条数pageSize: 2, // 每页的数据条数};},mounted() {},methods: {// 表格分页---前端分页//每页条数改变时触发 选择一页显示多少行handleSizeChange(val) {this.currentPage = 1;this.pageSize = val;},//当前页改变时触发 跳转其他页handleCurrentChange(val) {this.currentPage = val;},}};
</script><style lang="less">.v-table {//分页样式.block-box{width: 100%;height: 50px;margin-top: 10px;display: flex;justify-content: center;align-items: center;}}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

厄尔尼诺连续高温会导致能源中的原油、天然气、煤炭和电力等期货品种价格下跌

厄尔尼诺是一种发生在热带海洋中的异常现象&#xff0c;其显著特征是赤道太平洋东部和中部海域海水出现显著增温。厄尔尼诺会导致全球气候变化&#xff0c;影响农业、林业、畜牧业、渔业、交通运输业等领域&#xff0c;进而对大宗商品期货行业产生重大影响。本文将从以下几个方…

【Linux之拿捏信号3】阻塞信号

文章目录 相关概念原理sigset_t信号集信号集操作函数sigprocmask系统调用sigpending 相关概念 实际执行信号的处理动作——信号递达Delivery&#xff08;例如自定义捕捉动作&#xff0c;core&#xff0c;Term终止进程的动作&#xff09;。信号从产生到递达之间的状态——信号未…

typeScript(持续吐血版)

typeScript-02-进阶(TSVue3) 结合vue3来使用TypeScript 使用vite来创建vue3TS的项目 使用vite创建项目&#xff0c;并选择带ts的版本 npm create vitelatest my-vue-ts-app – --template vue-ts 参考链接&#xff1a;https://vuejs.org/guide/typescript/composition-api…

数据结构与算法--javascript(持续更新中...)

一. 概论 1. 数据结构 队列&#xff1a;一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项&#xff1b;队列在尾部添加新元素&#xff0c;并从头部移除元素。最新添加的元素必须排在队列的末尾。&#xff08;例如&#xff1a;去食堂排队打饭&#xff0c;排在前…

[网络安全提高篇] 一二一.恶意软件动态分析Cape沙箱Report报告的API序列批量提取详解

终于忙完初稿,开心地写一篇博客。 “网络安全提高班”新的100篇文章即将开启,包括Web渗透、内网渗透、靶场搭建、CVE复现、攻击溯源、实战及CTF总结,它将更加聚焦,更加深入,也是作者的慢慢成长史。换专业确实挺难的,Web渗透也是块硬骨头,但我也试试,看看自己未来四年究…

超细,设计一个“完美“的测试用例,用户登录模块实例...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 好的测试用例一定…

【Windows】Redis集群部署

集群是如何进行工作的 Redis采用哈希槽来处理数据与节点之间的映射关系&#xff0c;一个集群共有16384 个哈希槽&#xff0c;每个key通过 CRC16算法计算出一个16bit的值&#xff0c;再对16384取模&#xff0c;得到对应的哈希槽&#xff0c;集群通过维护哈希槽与节点的关系来得…

vue开发:vue的插槽功能讲解

vue的插槽 举一个生活中的例子&#xff1a;比如装修房子的时候我们会在很多地方预留出一些插孔&#xff0c;可能要插电冰箱&#xff0c;插电式&#xff0c;插充电器等&#xff0c;反正就是你觉得预留在这个位置的插座一定有用&#xff0c;这个预留的插座就类似我们今天要说的插…

Meta为全天候AR眼镜设计了AI系统的八大指导方针

众所周知&#xff0c;Meta不仅局限在Quest这类VR头显上&#xff0c;同时还在打造更轻量化的AR眼镜&#xff0c;目标就是让产品更好的融入到人们的日常生活中去。除了硬件上轻量化以外&#xff0c;在功能和交互体验上也至关重要&#xff0c;例如自然交互方式&#xff0c;比如手势…

【算法】十大排序算法以及具体用例算法题

文章目录 1:冒泡排序2:选择排序3:插入排序4:希尔排序5:堆排序6:计数排序7:基数排序8:快速排序9:归并排序10:桶排序 源代码下载 1:冒泡排序 /** 冒泡排序是内部排序* 冒泡排序将会每一次都从头开始遍历* 每一次遍历都会把最大的数据放到最后一个* 因此每一次都可以少遍历一个元…

透彻理解 UART 通信的基本方法

UART是一种异步全双工串行通信协议&#xff0c;由 Tx 和 Rx 两根数据线组成&#xff0c;因为没有参考时钟信号&#xff0c;所以通信的双方必须约定串口波特率、数据位宽、奇偶校验位、停止位等配置参数&#xff0c;从而按照相同的速率进行通信。 异步通信以一个字符为传输单位…

MySQL性能瓶颈定位慢查询

目录 1 性能优化的思路2 引言3 MySQL慢查询日志3.1 慢查询参数3.2 开启慢查询日志&#xff08;临时&#xff09;3.3 开启慢查询日志&#xff08;永久&#xff09;3.4 慢查询测试 4 MySQL性能分析 EXPLAIN4.1 概述4.2 EXPLAIN字段介绍4.2.1 id字段4.2.2 select_type 与 table字段…