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

这篇具有很好参考价值的文章主要介绍了40、使用elementUI分别实现前端,后端表格分页。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

40、使用elementUI分别实现前端,后端表格分页,前端,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>

40、使用elementUI分别实现前端,后端表格分页,前端,elementui,状态模式文章来源地址https://www.toymoban.com/news/detail-528001.html

说明分页器绑定变量说明:
: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>

到了这里,关于40、使用elementUI分别实现前端,后端表格分页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue搭配element-ui前端实现表格分页

    如果不从后台请求数据,那么就需要在前端手动管理数据。可以使用以下步骤实现该功能: 在 Vue 组件的 data 中定义一个数组来存放所有数据(不分页)。 在 mounted 钩子函数中,手动获取数据并存放到上一步定义的数组中。 在模板中使用 element-ui 的表格组件来展示数据,同

    2024年02月11日
    浏览(44)
  • Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

    Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页:         当table的数据量比较大的时候,一个屏幕展示不出全部的数据,这个时候就需要分页显示。而多数情况下都是做的后端分页,就是将分页参数和查询条件一并传到后端,后端将当前页要

    2024年01月20日
    浏览(55)
  • 前端和后端分别是什么?

      从技术工具来看: 前端:常见的 html5、JavaScript、jQuery... 后端:spring、tomcet、JVM,MySQL... 毕竟,如果这个问题问一个老后端,他掰掰手指可以给你罗列出一堆的名词来,比如设计模式、数据库优化、框架、JVM、网络编程...... 从简单描述来看: 前端:入门简单,先易后难,

    2024年02月09日
    浏览(46)
  • 基于Luckysheet实现的协同编辑在线表格支持在线导入数据库,前端导出,前端导入,后端导出

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 这两年,在线表格协作工具越来越火,但开源界一直没有相关的实现,被垄断在几个大厂手上,随着Luckysheet 的横空出世,开源界终于也有一个漂亮能打的在

    2024年02月11日
    浏览(59)
  • 前端分页和后端分页

    分页可以在前端或后端进行,具体取决于项目的需求和实现方式。以下是前端分页和后端分页的一些特点和适用场景: 前端分页 : 特点 :前端分页是指在前端(浏览器端)对数据进行分页处理,即一次性获取所有数据,然后在前端进行分页展示和切换。 优点 :减轻了服务

    2024年04月10日
    浏览(74)
  • 前端后端交互-ElementUI(日期选择器)

    日期选择器 页面效果 页面效果 组件源码 数据绑定 后端处理 控制器 mapper service 请求日志 请求日期范围 日志解析 说明 数据库的日期类型是 datetime 在真正的实体类上对应的是 使用 vo 时使用 String 类型,在测试过程中 Date 反复报错

    2024年02月10日
    浏览(45)
  • elementUi中的el-table表格的内容根据后端返回的数据用不同的颜色展示

    效果图如下: 首先 首先:需要在表格行加入 template slot-scope=\\\"{ row }\\\" /template标签  2.在methods里面加入这个方法:  3.去设置自己喜欢的颜色: //还有另一种(这种后端返回的数据里面带有背景色的字段)    

    2024年02月10日
    浏览(42)
  • 【vue导入导出Excel】vue简单实现导出和导入复杂表头excel表格功能【纯前端版本和配合后端版本】

    前言 这是一个常用的功能,就是导入和导出excel表格 但是时常会遇到一些复杂表头的表格导出和导入 比如我这个案例里面的三层表头的表格。 网上看了下发现了一个非常简单导出和导入方法 当然这个是纯前端的版本,会出现分页不好下载的情况。所以实际工作中,导出还是

    2024年02月11日
    浏览(64)
  • elementUI自定义上传文件 前端后端超详细过程

    下面是使用Element UI自定义上传文件的前后端详细过程: 前端过程: 引入Element UI组件库:在前端项目中引入Element UI库,可以通过CDN引入或者通过npm安装并导入。 创建上传组件:在前端代码中创建一个上传组件,可以使用 el-upload 组件来实现文件上传功能。在组件中设置上传

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包