使用element-ui实现表格分页

article/2025/9/18 3:41:46

前言

由于项目需要,我使用到了element-ui,当需要使用到表格分页功能的时候,就遇到了一些问题,但通过努力还是解决了,接下来就让我讲一下我对于element-ui中的分页功能的了解(因为这次讲的是表格的分页,所以接下来的内容会与表格联系在一起)。

表格分页

官网地址:https://element.eleme.cn/#/zh-CN/component/pagination

一、前端分页

所谓的前端分页就是用请求从后台把所有的数据拿下来,然后进行分页,如果当数据足够大时,网页就会加载的很慢,唯一的好处就是只需要向后台请求一次就可以了。
例子:
在这里插入图片描述
上面就是一个分好页的表格,接下来我为大家逐步讲解一下。

1. 创建表格

首先,创建一个表格,并将数据填充到表格中:
template标签中添加如下代码:

<el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" style="width: 100%"><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 prop="address" label="地址"></el-table-column>
</el-table>

script标签中添加数据

<!--固定数据-->
data() {return {tableData: [     //在<el-tabel>标签里的 :data的值是tabelData,表示表格的数据都在tabelData中,所以是这个写法。{……}   //数据,在此省略]}
}<!--动态数据-->
<!--向后台请求数据,在vue中,推荐使用axios请求-->

说明一下:
el-tabel标签中的

data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"

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

2、分页表格

接下来为表格进行分页:
在这里插入图片描述
template标签中添加

<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的值表示总共有多少条数据;

因为currentPagepageSize并不是具体的值,所以需要在script标签中的data()中为其进行赋值。于是在上面说到的slice大家都应该知道其作用了吧。在当所有的值都存在时,在界面上会自动把分的页显示出来,如上图中的:1、2、3……6。

3. 添加事件

因为分页需要实现的是点击不同的页数会显示响应的数据,于是还需要再methods中添加如下代码:

methods: {//每页条数改变时触发 选择一页显示多少行handleSizeChange(val) {console.log(`每页 ${val}`);this.currentPage = 1;this.pageSize = val;},//当前页改变时触发 跳转其他页handleCurrentChange(val) {console.log(`当前页: ${val}`);this.currentPage = val;}
}
//函数名称是自己定义的,可以随便修改,但是记住,要与<el-pagination>标签中的@size-change 和 @current-change 保持一致

4. 完整前端分页代码

<template><div><!-- 表格 --><el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" style="width: 100%"><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 prop="address" label="地址"></el-table-column></el-table><!-- 分页器 --><div class="block" style="margin-top:15px;"><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: [{date: "2016-05-02",name: "第一页",address: "上海市普陀区金沙江路 1518 弄"},{date: "2016-05-04",name: "第二页",address: "上海市普陀区金沙江路 1517 弄"},{date: "2016-05-01",name: "第三页",address: "上海市普陀区金沙江路 1519 弄"},{date: "2016-05-03",name: "第四页",address: "上海市普陀区金沙江路 1516 弄"},{date: "2016-05-01",name: "第五页",address: "上海市普陀区金沙江路 1519 弄"},{date: "2016-05-03",name: "第六页",address: "上海市普陀区金沙江路 1516 弄"},],currentPage: 1, // 当前页码total: 20, // 总条数pageSize: 2 // 每页的数据条数};},methods: {//每页条数改变时触发 选择一页显示多少行handleSizeChange(val) {console.log(`每页 ${val}`);this.currentPage = 1;this.pageSize = val;},//当前页改变时触发 跳转其他页handleCurrentChange(val) {console.log(`当前页: ${val}`);this.currentPage = val;}}};
</script>

二、后端分页

所谓的后端分页就是数据在后台已经分好页了,前端只需要用请求去获取数据即可,后端分页的好处是只会把当前页的数据给拿下来,网页加载的速度会很快,但是不足就是每跳转一次,前端都要向后台发送一次请求。

例子:
在这里插入图片描述
由于创建的步骤同上,所以在此跳过,直接进入下一步。

1.编写请求数据的函数

因为后台已经帮我们分好页了,我们只需要根据页数的不同,向后台发送不同的请求就可以了。
此网页的请求代码如下:

getlivestockInfo(num1){var that = this;var params = new URLSearchParams();params.append('pageNum',num1);// params.append('total',this.tableData.total);that.$axios.post('url',params)         //"url"处填写后台的接口.then(response => {  // 请求成功console.log('请求成功');//因为后台帮助分页,所以后台需要将一些数据传到前端,当然就不止有数据了,例如:数据的总数等等that.tableData=response.data.data;   //response.data.data代表从后台请求到的所有的数据that.currentPage=num1;      //因为每次请求的页数不同,所以采用一个变量代替that.pageSize=that.tableData.pageSize;that.total=that.tableData.total;console.log(that.tableData.list.length);   //我后台的数据中数据是放在数组list中}).catch(error => {  // 请求失败console.log('请求失败');console.log(error);})
}

因为我这里后台传来了当前页数、总数,所以在data 中的对应数据就失效了,例如下图的 totalpageSize
在这里插入图片描述

2.引用请求函数

首先需要显示第一页的数据,于是网页加载的时候就需要执行一次,所以在mounted()中添加如下代码:

mounted(){this.getlivestockInfo(1);  //因为刚加载显示第一页的数据,所以为1.
},

其次,每当我们换页的时候就需要向后台请求一次,所以在handleCurrentChange(val)中引用函数:

handleCurrentChange(val) {console.log(`当前页: ${val}`);this.currentPage = val;this.getlivestockInfo(val);
}

3.完整后端分页代码

<template><div><!-- 表格 --><el-table :data="tableData.list" style="width: 100%"><el-table-columnprop="bluetoothId"label="蓝牙编号"width="120"></el-table-column>           <!--设置列标--><el-table-columnprop="species"label="品种"width="120"></el-table-column><el-table-columnprop="sex"label="性别"width="120"></el-table-column><el-table-columnprop="outTime"label="预计出售时间"width="200"></el-table-column><el-table-columnprop="preorderStatus"label="销售情况"width="120"></el-table-column></el-table><!-- 分页器 --><div class="block" style="margin-top:15px;"><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[10, 15, 20, 25]":page-size="pageSize"layout="total, prev, pager, next, jumper":total="total"></el-pagination></div></div></template><script>export default {data() {return {tableData:{},currentPage: 1, // 当前页码total: 20, // 总条数pageSize: 2 // 每页的数据条数};},mounted(){this.getlivestockInfo(1);},methods: {//每页条数改变时触发 选择一页显示多少行handleSizeChange(val) {console.log(`每页 ${val}`);this.currentPage = 1;this.pageSize = val;},//当前页改变时触发 跳转其他页handleCurrentChange(val) {console.log(`当前页: ${val}`);this.currentPage = val;this.getlivestockInfo(val);},getlivestockInfo(num1){var that = this;var params = new URLSearchParams();params.append('pageNum',num1);that.$axios.post('url',params)    //补上后台接口即可.then(response => {  // 请求成功console.log('请求成功');that.tableData=response.data.data;that.currentPage=num1;that.pageSize=that.tableData.pageSize;that.total=that.tableData.total;console.log(that.tableData.list.length);}).catch(error => {  // 请求失败console.log('请求失败');console.log(error);})}}};
</script>

结尾

到此,我个人对于前端分页和后端分页的理解就全部完了,需要注意的是当我们使用后端分页时,要注意前端就不能进行分页了,前端就只负责请求,后台已经把页分好了,不然你的页面就只会显示第一页的数据,其他页都是显示“暂无数据”;前端分页相对来说不会这么麻烦,但还是要多注意。


http://chatgpt.dhexx.cn/article/GflGP2ej.shtml

相关文章

排序算法---快速排序、堆排序、冒泡排序

排序算法 1 快速排序代码实现stdlib库快排 2 堆排序堆排序的基本思想如何构造一个大顶堆排序 3 冒泡排序 1 快速排序 文章原地址&#xff1a;https://blog.csdn.net/morewindows/article/details/6684558 快速排序的平均时间复杂度是0(NlogN)&#xff0c;它采用了一种分治的策…

ARM C语言调用汇编函数 实现冒泡排序

使用冒泡排序将指定数组排序后输出排序函数使用汇编语言编写&#xff0c;C语言调用汇编语言在控制台显示排序前后的结果 一、问题分析二、代码编写2.1 C语言代码2.2 汇编代码 三、ADS调试3.1 运行ADS软件&#xff0c;进入调试界面3.2 汇编函数调试3.3 执行结果 一、问题分析 本…

汇编入门程序,冒泡排序

写了半天发现资料不多&#xff0c;放上来造福一下人类&#xff0c;主要题库的题也好多题解太少 一 用汇编语言编写程序&#xff0c;要求实现以下功能&#xff1a; 程序执行后&#xff0c;屏幕显示提示信息&#xff1a;“Please Enter The Password:”&#xff0c;等待输入用…

汇编语言实现冒泡排序

文章目录 题目简述思路代码总结 题目简述 给定10个数&#xff0c;使用汇编语言&#xff0c;实现10个数的冒泡排序&#xff0c;使之成为升序 思路 本题中&#xff0c;我们需要使用条件转移指令&#xff0c;比较指令&#xff08;CMP&#xff09;&#xff0c;交换指令&#xff…

微机原理实现冒泡排序

微机原理实现冒泡排序 废话不说先放题目 实验目的 1&#xff09; 学会从键盘中读取输入&#xff0c;并将其ASCII码进行转化。 2&#xff09; 利用所学的冒泡排序对数组进行输出 3&#xff09;学会使用中断程序进行字符的输出。 实验所用仪器及使用方法 Windows emu8086仿…

MIPS实现冒泡排序

程序目标 从键盘输入10个无符号字数并从大到小进行排序&#xff0c;排序结果在屏幕上显示出来。 准备工作 编程的入门级知识&#xff1a;循环、冒泡排序、内存和堆栈的概念MIPS语法&#xff1a;程序基本结构汇编语言&#xff1a;不同寄存器作用、数据存储、系统调用编辑器&a…

c语言数组实现冒泡排序

数组实现冒泡排序 什么是冒泡拍排序用数组实现总结 什么是冒泡拍排序 首先&#xff0c;需要了解一下什么是冒泡排序&#xff0c;定义&#xff1a;冒泡排序&#xff08;Bubble Sort&#xff09;也是一种简单直观的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个…

汇编实现排序——冒泡排序

冒泡排序算法的运作如下&#xff1a;&#xff08;从后往前&#xff09; 1.比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。 2.对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。…

冒泡排序与qsort排序

先来比较两者的优缺点&#xff1a; 冒泡排序qsort排序优简单&#xff0c;稳定效率高&#xff0c;适用性广劣适用性差&#xff0c;速度慢较为复杂 一、冒泡排序&#xff1a; 底层思路&#xff1a; 如此循环9轮得到 知道了思路就可以写代码了 #include<stdio.h> void bubbl…

易语言冒泡排序

冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成。这个算…

实现冒泡排序函数

#1 冒泡排序思想 假设我们现在又是个乱序的数字&#xff0c;10 2 3 4 1 6 8 5 9 7&#xff0c;要对这十个数字进行升序排序&#xff08;越往右数字越大&#xff09;&#xff0c;我们可以这样子做&#xff1a; 取出最左边的数字&#xff08;10&#xff09;&#xff0c;然后依次…

用汇编实现冒泡排序

对应的C语言代码如下&#xff1a; int number[6]{12,3,2,5,6,7}; for(int i0;i<6;i) {for(int j0;j<6;j) {if(a[i]<a[j]) {int tempa[i];a[i]a[j];a[j]temp;}} } 汇编代码&#xff08;从大到小排列&#xff09;&#xff1a; DATA SEGMENTBUF DB 12,3,2,5,6,7 …

c语言冒泡排序while循环,冒泡排序算法,C语言冒泡排序算法详解

冒泡排序是最简单的排序方法&#xff0c;理解起来容易。虽然它的计算步骤比较多&#xff0c;不是最快的&#xff0c;但它是最基本的&#xff0c;初学者一定要掌握。 冒泡排序的原理是&#xff1a;从左到右&#xff0c;相邻元素进行比较。每次比较一轮&#xff0c;就会找到序列中…

冒泡排序与qsort函数详解

提及到排序&#xff0c;冒泡排序算是一个很基础的排序了。那么冒泡排序到底是什么呢&#xff1f;冒泡排序在什么情况下使用呢&#xff1f;qsort函数又是什么呢&#xff1f;接下来我给大家通过举例来详细解释一下。 引入 这里给大家一个题目&#xff0c;大家可以简单思考一下&am…

模仿qsort功能实现一个冒泡排序

目录 1.简单介绍qsort 2.模仿qsort实现冒泡排序 qsort函数原型 void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*)); 一些解释: 1.base:指向要排序数组的第一个对象 类型为void* 2.num:base所指向数组的元素总数…

字符串的冒泡排序

字符串的冒泡排序 本题要求使用冒泡排序法对任意给定的N个字符串按从小到大排序&#xff0c;输出扫描完第K&#xff08;K<N&#xff09;遍后的中间结果序列。 输入格式&#xff1a; 输入在第1行中给出N和K&#xff08;1≤K<N≤100&#xff09;&#xff0c;此后N行&…

冒泡排序(C语言)

文章目录 1. 冒泡排序如何实现1.1 冒泡排序函数的错误设计1.2 数组名是什么&#xff1f;1.3 冒泡排序函数的正确设计 1. 冒泡排序如何实现 往往我们在写代码的时候&#xff0c;会将数组作为参数传个函数&#xff0c;比如&#xff1a;我要实现一个冒泡排序&#xff08;这里要讲算…

模仿qsort实现一个冒泡排序的通用算法

&#x1f4a5;qsort函数介绍&#x1f4a5;冒泡排序介绍&#x1f4a5;什么是冒泡排序的通用算法&#x1f4a5;模仿qsort的一个冒泡排序的通用算法&#x1f4a5;结语 &#x1f525;qsort函数介绍 在一些编程题中经常需要你按照某个指标按照从小到大或从大到小输出一些数据&#x…

c语言冒泡排序数组指针,c语言冒泡排序,指针,数组

冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面…

汇编——实现冒泡排序+讲解

题目描述&代码 有一个首地址为A的N字数组&#xff0c;编写程序采用冒泡排序使该数组中的数按照从大到小的次序整序。 数据存储在A的数组中&#xff08;即内存中&#xff09;&#xff0c;我们需要利用冒泡排序实现从大到小排序。 ;description data SEGMENT USE16a dw …