Layui实现删除及修改后停留在当前页

1、功能概述?

我们在使用layui框架的table显示数据的时候,会经常的使用分页技术,这个我们期望能够期望修改数据能停留在当前页,或者删除数据的时候也能够停留在当前页,这样的用户体验会更好一些,但往往事与愿违,实现这个功能非常的困难。

本人经过多次实验,提供一种较为简单的,行之有效的,实现删除和修改停留当前页的方式。

2、具体实现过程如下

2.1、Layui后端的创建方式

我这个案例是使用mybatisplus查询数据,没有什么值得说的。

重点是:layui的table接收的数据格式需要特定的格式:

Map<String, Object> results = new HashMap<>();
    results.put("code", 0);
    results.put("msg", "执行成功");
    results.put("count", DutyList.getTotal());
    results.put("data", DutyList.getRecords());

而且code的值必须是0,count后面是数据的总条数,data是当前的分页数据。

后端不管通过那种方式实现分页都可以,需要注意的是:layui的数据表格table,向后端传递的当前名称为page,每页的记录数是limit,这两个参数的名称是固定的。

//查询值班人员信息
@RequestMapping("/list")
@ResponseBody
public Map<String, Object> list(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int limit, @RequestParam(defaultValue = "") String dutyName, @RequestParam(defaultValue = "") String dutyAddress) {
    Page<DutyInfo> pageParam = new Page<>(page, limit);
    QueryWrapper<DutyInfo> queryWrapper = new QueryWrapper<>();
    queryWrapper.like("dutyname", dutyName);
    queryWrapper.like("dutyaddress", dutyAddress);
    Page<DutyInfo> DutyList = dutyInfoService.selectPage(pageParam, queryWrapper);
    Map<String, Object> results = new HashMap<>();
    results.put("code", 0);
    results.put("msg", "执行成功");
    results.put("count", DutyList.getTotal());
    results.put("data", DutyList.getRecords());
    return results;
}

2.2、配置layui中table.render的当前页参数

下面的代码重点是需要关注currentPage的设置。

//定义当前默认的页数
var currentPage =  1;
//展示已知数据
table.render({
  elem: '#dutyinfo'
  ,url:'/duty/list'
  ,cols: [[ //标题栏
    {field: 'id', title: '编号', width: '6%', sort: true}
    ……表格其他列,不做过多展示
,{title: '操作', width: '14%',toolbar: '#editduty'}

  ]]
  ,skin: 'line' //表格风格
  ,even: true
  ,page:{
      layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip']
      ,limits: [5, 10, 15]
      ,limit: 5 //每页默认显示的数量
      ,curr:currentPage
    }
    ,done: function(res, curr, count){// 数据渲染完毕的回调函数
        currentPage = curr;//将当前页码赋值给全局变量currPage
    }
});

2.3、通过toolbar创建删除按钮

<script type="text/html" id="editduty">
  {{#  if(d.dutystate==1){  }}
    <a class="layui-btn layui-btn layui-btn-xs" lay-event="deleteduty">删除</a>
  {{# } }}
</script>

2.4、删除按钮事件

下面的步骤相对较多,建议一步步测试,获取到想要的数据。

// 单元格工具事件
table.on('tool(dutyinfo)', function(obj){ //注:tool 是工具条事件名,dutyinfo 是 table 原始容器的属性 lay-filter="对应的值"
    var data = obj.data //获得当前行数据
        ,layEvent = obj.event //获得 lay-event 对应的值
    if(layEvent === 'deleteduty'){
        //获取当前页数
        var currentPage = $(".layui-laypage-skip .layui-input").val();
//通过异步请求实现删除数据功能
        $.get("/duty/deleteDutyInfo",{"id":data.id},function(msg){
            //获取table中数据总条数--删除前的总条数
            var tablecount = $(".layui-laypage-count").text();
            //截取条数,获取的原始数据 数据如:总 12 条
//从数据中截取中当前页12
            tablecount=tablecount.substring(2,tablecount.length-1);
            //得到当前table的limit,这limit就是每页的记录数
            var limit = $(".layui-laypage-limits option:selected").val();
//根据公式计算出最新的总页数有多少页
            var totalPage=(tablecount-1)/limit+1;
            //如果当前页是最后一页,则重置当前页为当前页
//因为删除数据的时候,总页数会变化
if(currentPage == totalPage){
                currentPage = currentPage - 1;
            }
            //刷新表格,将当前页传入表格,表格会通过done:function重置表格。
            table.reload('dutyinfo',{page:{curr:currentPage}});
        });
    }

});

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

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

相关文章

python 基础知识点(蓝桥杯python科目个人复习计划65)

今日复习内容&#xff1a;做题 例题1&#xff1a;遥远的雪国列车 问题描述&#xff1a; 小蓝和小红今天在房间里一起看完了“雪国列车”这部电影&#xff0c;看完之后他们感触颇深&#xff0c;同时他们想到了这样一道题目&#xff1a; 现在有一个数轴&#xff0c;长度为N&a…

thinkphp 微信商户付款到微信小程序用户零钱(v2密钥版)

这几天做项目有一个需求,小程序用户提交记录后,商家后台审核通过自动转账到用户的微信零钱中. 今天分享下如何实现自动打款: 一种是用v2密钥的接口:企业付款到零钱, 一种需要用v3密钥的接口:微信商户转账到零钱 php后端代码 v2企业付款到零钱 /*** 审核通过红包打款* @aut…

Java开发者的新宠:探索轻量级且功能强大的Magic-API

Java开发者的新宠&#xff1a;探索轻量级且功能强大的Magic-API 一、Magic-API简介二、Magic-API的核心特性三、结语 大家好&#xff0c;这里是程序猿代码之路&#xff0c;在当今的软件开发领域&#xff0c;快速迭代和高效交付是每个项目追求的目标。对于Java开发者来说&#x…

Cloudways搭建WordPress外贸独立站完整教程

现在做个网站不比从前了&#xff0c;搭建网站非常的简单&#xff0c;主要是由于开源的CMS建站系统的崛起&#xff0c;就算不懂编程写代码的人也能搭建一个自己的网站&#xff0c;这些CMS系统提供了丰富的主题模板和插件&#xff0c;使用户可以通过简单的拖放和配置操作来建立自…

二、SQL基础学习(函数、约束、事务)

目录 1、函数1.1、字符串函数1.2、数值函数1.3、日期函数1.4 、流程函数 2、约束2.1、外键约束2.2、删除/更新行为 3、事务3.1、事务的四大特性3.2、并发事务问题3.2、事务的隔离级别 1、函数 1.1、字符串函数 # concat select concat(Hello, MySql);# lower select lower(He…

Unity InputField实现框自适应内容简便方法

要实现InputField框自适应输入内容&#xff0c;除了通过代码进行处理&#xff0c;还可以是使用以下简便的方法。 1、创建InputField组件&#xff1a;右键->UI->Input Field -TextMeshPro。 2、把Input Field Settings中的Line Type设置为Multi Line Newline模式&#x…

探索NFT数字藏品交易平台:发现新的数字艺术世界

探索NFT数字藏品交易平台&#xff1a;发现新的数字艺术世界 随着数字化时代的来临&#xff0c;NFT&#xff08;非同质化代币&#xff09;技术正在改变艺术市场的格局&#xff0c;使得数字艺术品成为热门投资对象。而要进入这个令人兴奋的领域&#xff0c;您需要了解一些主要的…

区间和(图论)

小明与小红在玩一个猜谜游戏。小红有一个长度为N的下标从1开始的数组A。起初时&#xff0c;小明并不知道数组里的任何数。但是小红会告诉小明Q个关于数组A的信息&#xff0c;每个信息包括三个数字L、R、W表示&#xff1a;A[L] A[L 1] ... A[R] W 现在小红要小明用这Q组信…

hadoop分布式环境搭建

准备三台centos虚拟机 。&#xff08;master&#xff0c;slave1&#xff0c;slave2&#xff09; (hadoop、jdk文件链接&#xff1a;https://pan.baidu.com/s/1wal1CSF1oO2h4dkSbceODg 提取码&#xff1a;4zra) 前四步可参考hadoop伪分布式环境搭建详解-CSDN博客 1.修改主机名…

免登录积分商城系统 动力商城 兑换商城源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 免登录积分商城源码/动力商城/兑换商城系统 之前互站买来的&#xff0c;看着还是很不错的&#xff0c;不需要注册登录的商城&#xff0c;东西完整。UI也挺漂亮&#xff0c;这相当于是…

全球造爆款,海尔智家凭什么?

据说&#xff0c;广东人是地球上最像三体人的群体&#xff0c;因为需要时刻小心脱水和浸泡的时机。 这是因为广东人每年春天都会经历的现实噩梦“回南天”。墙壁淌水、地板湿滑、衣服干不了……浸泡在回南天里的广东人&#xff0c;喜提最新地狱笑话&#xff1a;“广东人有望最…

.rmallox勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 近年来&#xff0c;勒索病毒的威胁日益增加&#xff0c;其中一种名为.rmallox的勒索病毒备受关注。这种病毒通过加密文件并勒索赎金来威胁受害者。本文将介绍.rmallox勒索病毒的特点&#xff0c;以及如何恢复被其加密的数据文件&#xff0c;并提供预防措施&a…

【kaggle竞赛】从手写图像数据集中正确识别数字

1. 题目&#xff1a; 在本次比赛中&#xff0c;您的目标是从数以万计的手写图像数据集中正确识别数字。 1.1. Goal 目标✨ 本次比赛的目标是拍摄手写个位数的图像&#xff0c;并确定该数字是什么。 对于测试集中的每个标签&#xff0c;您都应该预测正确的标签。 本次比赛的…

《我的AUTOSAR之路》ECUM(二) 唤醒处理

ECUM唤醒 1 EcuM 唤醒源2 EcuM 唤醒源配置3 Can 通道唤醒源调用解析1 EcuM 唤醒源 AUTOSAR 唤醒过程包含的步骤 检查唤醒源和上报唤醒时间唤醒源保护唤醒过程是独立于 EcuM 休眠阶段的,但是唤醒时间可以用于休眠阶段 在整个 Ecu 所有阶段,唤醒事件都可以存在唤醒不单单指 Ecu …

【Nutx3】middleware目录介绍

简言 记录下nuxt3middleware目录的使用方法。 middleware middleware是存放路由中间件的文件目录。 路由中间件有三种&#xff1a; 匿名&#xff08;或内联&#xff09;路由中间件直接在页面中定义。已命名的路由中间件&#xff0c;放在 middleware/ 中&#xff0c;页面使用…

4.1_4 文件的物理结构

文章目录 4.1_4 文件的物理结构&#xff08;一&#xff09;文件块、磁盘块&#xff08;二&#xff09;文件分配方式——连续分配&#xff08;三&#xff09;文件分配方式——链接分配&#xff08;1&#xff09;链接分配——隐式链接&#xff08;2&#xff09;链接分配——显式链…

慢sql优化

1.避免使用select *&#xff0c;而是明确列出需要的列&#xff0c; 2.小表驱动大表&#xff0c;in适用于左边大表&#xff0c;右边小表。 exists适用于左边小表&#xff0c;右边大表。 3.批量操作&#xff1a;如果每次插入数据库数据&#xff0c;都要连接一次数据库&#xf…

若依 ruoyi-cloud [网关异常处理]请求路径:/system/user/getInfo,异常信息:404

这里遇到的情况是因为nacos中的配置文件与项目启动时的编码不一样&#xff0c;若配置文件中有中文注释&#xff0c;那么用idea启动项目的时候&#xff0c;在参数中加上 -Dfile.encodingutf-8 &#xff0c;保持编码一致&#xff0c;&#xff08;用中文注释的配置文件&#xff0c…

杂货铺 | vscode配置C/C++环境(亲测极简ver)

文章目录 &#x1f4da;Step1&#xff1a;下载安装VSCode&#x1f4da;Step2&#xff1a;下载安装g&#x1f4da;Step3&#xff1a;编辑环境变量&#x1f4da;Step4&#xff1a;安装vscode插件&#x1f4da;Step5&#xff1a;建好文件夹⭐️&#x1f4da;Step6&#xff1a;开始…

linux(Ubuntu22) 一篇带你学会Linux,详细篇

Linux 简介 精通Linux&#xff0c;自带python&#xff0c;系统开源 电脑可安装双系统 c盘安装win D盘安装linux 在一套硬件上只能同时运行一个操作系统 虚拟机 模拟真实环境 在虚拟机内运行操作系统 需要硬件支持虚拟化 开启VT-X VM…