layui+ssm实现数据表格双击编辑更新数据

layui实现数据表格双击编辑数据更新

在使用layui加载后端数据请求时,对数据选项框进行双击即可实现数据的输入编辑更改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码块

    var form = layui.form, table = layui.table,
        layer = parent.layer === undefined ? layui.layer : parent.layer,
        laypage = layui.laypage;
    var util = layui.util;
    $ = layui.jquery;


    //数据表格
    table.render({
        id: 'categoryList',
        elem: '#categoryList',
        url: ctx + "/book/getCategoryList", //数据接口
        cellMinWidth: 80,
        toolbar: '#toolbar',
        editTrigger: 'dblclick',// 触发编辑的事件类型(默认 click )
        limit: 10,//每页条数
        limits: [10, 20, 30, 40],
        layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'],
        css: [
            // 对开启了编辑的单元格追加样式
            '.layui-table-view td[data-edit]{color: #16B777;}'
        ].join(''),
        cols: [[ //表头
            {type: 'numbers', title: '序号', width: 80},//序号列
            {field: 'categoryName', title: '类别名称', align: 'center', edit: 'textarea'},// edit: 'textarea'主要标记当前项是否启用编辑
            {field: 'categoryDesc', title: '类别说明', align: 'center', edit: 'textarea'},
            {
                field: 'categoryDate',
                title: '创建时间',
                sort: true,
                align: 'center',
                templet: '<div>{{ formatTime(d.categoryDate,"yyyy-MM-dd hh:mm:ss")}}</div>'
            },
            {
                fixed: 'right', title: '操作', align: 'center', templet: function (d) {
                    return '<button class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit">编辑</i></button>'
                        + '<button class="layui-btn layui-bg-red layui-btn-xs" lay-event="delete"><i class="layui-icon layui-icon-delete">删除</i></button>';
                }
            },
        ]],
        page: true
    });
   /*
   * 单元格双击编辑事件
   * */
    table.on('edit(categoryList)', function (obj) {
        var field = obj.field; // 得到修改的字段
        var value = obj.value // 得到修改后的值
        var cateId = obj.data.cateId; // 获取当前修改数据的id
        // 值的校验
        if (value.replace(/\s/g, '') === '') {
            layer.msg('修改值不能为空!');
            return obj.reedit(); // 重新编辑
        }
        // 编辑后续操作,如提交更新请求,以完成真实的数据更新
        var index = top.layer.msg('正在将新数据写入数据库,请稍候...', {icon: 16, time: false, shade: 0.8});
        var msg;
        setTimeout(function () {
            $.ajax({
                type: "POST",
                url: ctx + "/book/updateCate",
                data: {
                    cateId: cateId, // 获取当前修改数据的id
                    field: field,// 得到修改的字段
                    value: value,// 得到修改后的值
                },
                success: function (d) {
                    if (d.code == 0) {
                        msg = d.msg;
                    } else {
                        msg = d.msg;
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    layer.msg("获取数据失败! 先检查sql 及 Tomcat Localhost Log 的输出");
                }
            }).done(function () {
                top.layer.close(index);
                top.layer.msg(msg);
                layer.closeAll("iframe");
                setTimeout(function () {
                    parent.location.reload();
                }, 1000);
            });
        }, 2000);
    });
 


});

在这里插入代码片

这里只要使用layui和后端ssm框架实现,所以后端代码
controller代码

 /*
     * 数据更新操作
     * */
    // 更新分类信息的接口
    @RequestMapping("/updateCate")
    @ResponseBody
    //根据前端提供的id,更改的字段,更改的值进行查询更新
    public ResultUtil updateCate(Integer cateId, String field, String value) throws ParseException {
        // 打印传入的分类ID、字段和值
      /*  System.out.println(cateId);
        System.out.println(value);
        System.out.println(field);*/
        // 根据分类ID获取分类实体
        CategoryEntity categoryEntity = bookService.getCategoryById(cateId);
        // 打印获取到的分类实体
        System.out.println(categoryEntity);
        // 插入当前时间作为修改时间
        Date data = new Date();
        // 创建一个SimpleDateFormat对象,用于格式化日期
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 使用SimpleDateFormat对象将Date对象转换为字符串格式的日期
        String nowTime = simpleDateFormat.format(data);
        // 使用SimpleDateFormat对象将字符串格式的日期解析为Date对象
        Date date1 = simpleDateFormat.parse(nowTime);
        // 如果获取到的分类实体不为空
        if (categoryEntity != null) {
            // 根据字段名进行相应的操作
            switch (field) {
                case "categoryDesc":
                    categoryEntity.setCategoryDesc(value);
                    break;
                case "categoryName":
                    categoryEntity.setCategoryName(value);
                    break;
                default:
                    // 如果字段名不符合要求,返回错误信息
                    return ResultUtil.error("提交的数据有问题,请检查!");
            }
            // 设置修改时间
            categoryEntity.setCategoryDate(date1);
            // 更新分类实体
            bookService.updateCategory(categoryEntity);
            // 返回成功信息
            return ResultUtil.ok("数据信息更新成功!");
        }
        // 如果获取到的分类实体为空,返回错误信息
        return ResultUtil.error("提交的数据有问题,请检查!");
    }

service

    /*
    * 数据更新
    * */
    void updateCategory(CategoryEntity categoryEntity);
    /*
    * 根据id机型查询数据
    *
    * */
    CategoryEntity getCategoryById(Integer cateId);

serviceImpl

    /*
     * 数据更新
     * */
    @Override
    public void updateCategory(CategoryEntity categoryEntity) {
        categoryDao.updateCategory(categoryEntity);
    }

    /*
     * 根据id查询数据
     * */
    @Override
    public CategoryEntity getCategoryById(Integer cateId) {
        return categoryDao.getCategoryById(cateId);
    }

dao

  /*
    * 数据更新updateCategory
    * */
    void updateCategory(CategoryEntity categoryEntity);

    /*
    * 根据id查询数据
    * */
    CategoryEntity getCategoryById(Integer cateId);

mapper.xml

 <!--根据id查询数据-->
    <select id="getCategoryById"
            resultType="layui.library.manager.project.entity.CategoryEntity">
        SELECT *
        FROM tb_book_category
        where cateId = #{cateId}
    </select>
    <!--数据更新-->
    <update id="updateCategory" parameterType="layui.library.manager.project.entity.CategoryEntity">
        update tb_book_category
        <set>
            <if test="categoryName!=null">
                categoryName=#{categoryName},
            </if>
            <if test="categoryDesc!=null">
                categoryDesc=#{categoryDesc},
            </if>
            <if test="categoryDate!=null">
                categoryDate=#{categoryDate}
            </if>
        </set>
        where cateId=#{cateId}
    </update>

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

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

相关文章

5.【自动驾驶与机器人中的SLAM技术】2D点云的scan matching算法 和 检测退化场景的思路

目录 1. 基于优化的点到点/线的配准2. 对似然场图像进行插值&#xff0c;提高匹配精度3. 对二维激光点云中会对SLAM功能产生退化场景的检测4. 在诸如扫地机器人等这样基于2D激光雷达导航的机器人&#xff0c;如何处理悬空/低矮物体5. 也欢迎大家来我的读书号--过千帆&#xff0…

2023经典软件测试面试题

1、问&#xff1a;你在测试中发现了一个bug&#xff0c;但是开发经理认为这不是一个bug&#xff0c;你应该怎样解决&#xff1f; 首先&#xff0c;将问题提交到缺陷管理库里面进行备案。 然后&#xff0c;要获取判断的依据和标准&#xff1a; 根据需求说明书、产品说明、设计…

Figma安装指南:新手入门必看!

如果您想下载Figma客户端&#xff0c;可以直接在Figma官网Products>Downloads页面下载。 如果你不能访问Figma的官方网站&#xff0c;即使下载到客户端&#xff0c;你的网络环境也不能正常使用。 因为Figma的服务器在国外&#xff0c;在国内访问时经常会遇到网络不稳定的情…

如何制作教育培训小程序

教育培训行业近年来发展迅速&#xff0c;越来越多的机构开始意识到通过小程序来提供在线教育服务的重要性。小程序不仅可以为用户提供便捷的学习体验&#xff0c;还可以增加机构的知名度和品牌影响力。那么&#xff0c;如何制作一款教育培训小程序呢&#xff1f; 首先&#xff…

系列十三、SpringBoot的自动配置原理分析

一、概述 我们知道Java发展到现在功能十分的强大&#xff0c;生态异常的丰富&#xff0c;这里面离开不了Spring及其家族产品的支持&#xff0c;而作为Spring生态的明星产品Spring Boot可以说像王者一般的存在&#xff0c;那么的耀眼&#xff0c;那么的光彩夺目&#xff01;那么…

【开源】基于Vue.js的停车场收费系统

文末获取源码&#xff0c;项目编号&#xff1a; S 076 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S076。} 文末获取源码&#xff0c;项目编号&#xff1a;S076。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费…

油气罐防雷和化工防雷综合解决方案

油气罐防雷和化工防雷是化工企业安全生产的重要内容&#xff0c;涉及到化工装置、储罐、管道、电气设施等多个方面。地凯科技将介绍油气罐防雷和化工防雷的方案和应用方案&#xff0c;以期为化工企业提供一些参考。 油气罐防雷 油气罐是储存可燃易爆物质的设施&#xff0c;一…

jmeter资料

1.jmeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资源&#xff0c;例如静态文件、Java 小服务程序、CGI 脚本、Java 对象…

侯捷C++八部曲(一,面向对象)

头文件和类的声明 inline inline修饰函数&#xff0c;是给编译器的一个建议&#xff0c;到底是否为inline由编译器来决定&#xff0c;inline修饰的函数在使用时是做简单的替换&#xff0c;这样就避免了一些函数栈空间的使用&#xff0c;从能提升效率。从另一种角度看&#xff…

将.tiff格式图片转换为可视化的png,jpg,bmp等格式(附代码)

目前常用的.tiff格式图片转png格式图片&#xff0c;搜了一下&#xff0c;多数都是第三方平台直接转换&#xff0c;需要米&#xff0c;其实大可不必&#xff0c;自己撸代码就可以直接转换。 TIFF&#xff08;Tagged Image File Format&#xff09;是一种灵活的位图格式&#xf…

Android 应用程序无响应定位ANR原因

废话不多说&#xff0c;直接上方案&#xff1a; 第一步&#xff1a; 执行adb命令 adb bugreport /Users/mac/Desktop/anr 解压后FS/data/anr下就会有相关anr文件 /Users/mac/Desktop/anr 是电脑存储文件的路径&#xff0c;可以随便定义&#xff0c;这个没有影响。我的电脑是…

做一个类似万师傅家政小程序需要有哪些功能?

现如今人们生活节奏不断加快&#xff0c;自然很少有时间去处理生活中的琐事&#xff0c;恰好家政维修保洁小程序开发则能给线下用户提供方便。 家政保洁小程序应该具备哪些功能&#xff1f; 1、提供家政行业资讯&#xff0c;方便用户在选择家政保洁前了解行业动态。 2、分类搜…

【Linux】more命令使用

more 是linux的一个命令&#xff0c;类似cat命令&#xff0c;会以一页一页的显示&#xff0c;方便使用者逐页阅读。 More是一个过滤器&#xff0c;用于一次一屏地对文本进行分页。这个版本特别原始。用户应该意识到&#xff0c;less&#xff08;1&#xff09;提供了更多的模拟…

算法分析复习重点

目录 复习重点 子集数 01背包 排列树 &#xff08;可以求出所有的解&#xff0c;但是是残缺的&#xff09; n-皇后 n的全排列 回溯法 就是对隐式图的深度优先搜索 算法 &#xff08;勤劳或许也是一种诅咒&#xff09; 八皇后回溯的过程 解空间 结点的扩展规则 搜…

大模型技术的发展与实践

一、大模型的概念 大型语言模型&#xff0c;也称大语言模型、大模型&#xff08;Large Language Model&#xff0c;LLM&#xff1b;Large Language Models&#xff0c;LLMs) 。 大语言模型是一种深度学习模型&#xff0c;特别是属于自然语言处理&#xff08;NLP&#xff09;的…

【皇帝的新装】像管理产品一样,来管理自己

在前进的路上需要不时的回头看&#xff0c;看自己来时的脚步&#xff0c;是杂乱无章&#xff0c;还是方向一致。善于从经验中总结可以让我们少走许多弯路&#xff0c;降低我们的消耗。 偶然间&#xff0c;回头看看&#xff0c;入行产品经理已经三年有余。沉迷在各种具体事务中&…

类与对象的概念:创建及调用方法

掌握类和创建对象的关系 定义类 定义对象 定义和调用方法 编程思想&#xff1a;面向过程编程&#xff0c;面向对象编程 系统提供数据类型【String&#xff0c;char&#xff0c;double】&#xff0c;我们也可以自己定义类型&#xff1a;根据自定义类型所衍生出来的变量就是…

【Cadence Allegro17.4】

Cadence Allegro17.4 1. Cadence Allegro17.42. pcb工程文件的介绍3.4.5.6. 1. Cadence Allegro17.4 常用的工具 2. pcb工程文件的介绍 新建工程 &#xff1a; 飞行器 要创建的文件夹 GERBER光会文件&#xff0c;发出去制版。 DXF结构文件&#xff0c; pcb文件 lib 封装库 sc…

2023博思高科技智慧车行、人行专项研讨会成功召开

来源&#xff1a;智安物联网 11月30日&#xff0c;深圳市博思高科技有限公司&#xff08;以下简称“博思高科技”&#xff09;在其总部成功举办了智慧车行、人行专项研讨会议。本次会议邀请了来自国家发改委综合运输研究所的程世东主任&#xff0c;中国安全防范产品行业协会原…

BFS求树的宽度——结合数组建树思想算距离

二叉树最大宽度 https://leetcode.cn/problems/maximum-width-of-binary-tree/description/ 1、考虑树的宽度一定是在一层上的所以进行BFS&#xff0c;树的BFS不建议直接使用队列&#xff0c;每次add/offer然后poll/remove&#xff0c;这样子层级关系不好显示。我们可以定义…