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

news2024/9/27 6:29:01

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>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security 6.x 系列(7)—— 源码分析之Builder设计模式

一、Builder设计模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者&#xff0c;把他们放到一起看看他们的共同特点&#xff1a; 查看AuthenticationManagerBuilder的继承结构图&#xff1a; 查看HttpSecurity的继承结构图&#xff1a; 查看W…

京东数据分析(京东数据运营):2023年10月咖啡市场销售数据分析(商家销量销额店铺数据)

随着我国经济的发展及人们消费观念、消费习惯的变化&#xff0c;咖啡消费越来越成为一种时尚生活方式&#xff0c;国内咖啡市场也在快速增长。且在当前互联网新零售的背景下&#xff0c;线上咖啡市场也愈加繁荣。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年10月…

C# | 使用AutoResetEvent和ManualResetEvent进行线程同步和通信

使用AutoResetEvent和ManualResetEvent进行线程同步和通信 文章目录 使用AutoResetEvent和ManualResetEvent进行线程同步和通信介绍AutoResetEventManualResetEvent 异同点使用场景和代码示例AutoResetEvent 使用示例ManualResetEvent 使用示例阻塞多个线程并同时激活 介绍 在…

【无标题】广东便携式逆变器的澳洲安全 AS/NZS 4763

便携式逆变器的澳洲安全 AS/NZS 4763 便携式逆变器申请澳大利亚和新西兰SAA认证的时候&#xff0c;需要按照澳洲*用标准AS/NZS 4763: 2011进行测试。立讯检测安规实验室有澳洲AS/NZS 4763: 2011资质授权&#xff0c;为国内多家便携式逆变器客户成功申请澳洲SAA证书 便携式户外…

EXCEL中如何替换TRUE和FALSE

问题&#xff1a; 在EXCEL中使用查找/替换时&#xff0c;发现TRUE和FALSE不能被替换成true和false&#xff0c;替换了多次&#xff0c;一点反应都没有。网上提供的方法均是使用公式的大小写转换&#xff0c;但这个显然太麻烦了。通过摸索&#xff0c;找到了一种替换方法。 解…

力扣7.整数反转

题目描述 代码 自己写的像屎山&#xff0c;虽然能通过&#xff0c;但多了很多不必要的代码。 class Solution {public int reverse(int x) {int count 0;int res 0;//用temp2记录x的正负int temp2 x;if(x < 0){x -x;}int temp x;while(temp ! 0){temp temp / 10;cou…

36.位运算符

一.什么是位运算符 按照二进制位来进行运算的运算符叫做位运算符&#xff0c;所以要先将操作数转换成二进制&#xff08;补码&#xff09;的形式在运算。C语言的中的位运算符有&#xff1a; 运算符作用举例结果& 按位与&#xff08;and&#xff09; 0&00; 0&10; …

老化房设备材料选型要素

一&#xff1a;选择高温老化试验设备时&#xff0c;需要考虑以下几个因素&#xff1a; 温度范围&#xff1a;根据待测材料或产品的使用环境和需求&#xff0c;选择合适的温度范围。确保试验设备的最高和最低温度能够满足需求。控温精度&#xff1a;控温精度越高&#xff0c;试…

【Java基础】几种拼接字符串的方法

几种拼接字符串的方法 1.使用 "" 运算符拼接字符串2.使用 StringBuilder 或 StringBuffer 类3.使用 StringJoiner 类4.使用 String 类 join 方法5.使用 StringUtils 类6.使用 String 类 concat 方法7.使用 String.format() 方法格式化字符串8.使用 Stream 实现9.总结…

Python字符串模糊匹配工具:TheFuzz 库详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在处理文本数据时&#xff0c;常常需要进行模糊字符串匹配来找到相似的字符串。Python的 TheFuzz 库提供了强大的方法用于解决这类问题。本文将深入介绍 TheFuzz 库&#xff0c;探讨其基本概念、常用方法和示例代…

ES6 import

这里 import 的文件是项目内自己 export 的对象&#xff0c;并非 package.json 里引用的包。 后者的打包策略和配置有关。 原理&#xff1a;彻底理解JavaScript ES6中的import和export - 知乎

Db2的Activity event monitor在Db2 MPP V2上收集ROWS_INSERTED信息

注&#xff1a;本文不是讲解Db2 Activity event monitor&#xff0c;只是一个用法实践。要了解Activity event monitor&#xff0c;请参考 https://www.ibm.com/docs/en/db2/11.5?topicevents-activity-event-monitoring 。 环境 Red Hat Enterprise Linux release 8.8 (Oot…

手把手教你搭建个人地图服务器(高德离线部署解决方案):获取地图瓦片数据、高德JS API、私有化部署和调用。。。

一、概述 众所周知&#xff0c;目前常见的地图&#xff08;高德、百度、腾讯等&#xff09;只提供在线API服务&#xff0c;对于一些内网应用而言&#xff0c;如果需要使用地图展示&#xff0c;则由于不能访问互联网而无法使用类似的第三方地图服务。 本文&#xff0c;通过将高…

【web安全】RCE漏洞原理

前言 菜某的笔记总结&#xff0c;如有错误请指正。 RCE漏洞介绍 简而言之&#xff0c;就是代码中使用了可以把字符串当做代码执行的函数&#xff0c;但是又没有对用户的输入内容做到充分的过滤&#xff0c;导致可以被远程执行一些命令。 RCE漏洞的分类 RCE漏洞分为代码执行…

【C语言】递归详解

目录 1.前言2. 递归的定义3. 递归的限制条件4. 递归举例4.1 求n的阶乘4.1.1 分析和代码实现4.1.2 画图演示 4.2 顺序打印一个整数的每一位4.2.1 分析和代码实现4.2.2 画图推演 4.3 求第n个斐波那契数 5. 递归与迭代5.1 迭代求第n个斐波那契数 1.前言 这次博客内容是与递归有关&…

日期类 - Java

知道怎么查&#xff0c;怎么用即可&#xff0c;不用每个方法都背 日期类 第一代日期类方法演示 第二代日期类方法演示 第三代日期类前面两代日期类的不足分析第三代日期类常见方法方法演示 第一代日期类 Date类&#xff1a;精确到毫秒&#xff0c;代表特定的瞬间SimpleDateFor…

51单片机开发——day01

1、软件安装&#xff1a; 2、单片机&#xff08;Micro Controller Unit&#xff09;MCU: 内部集成了cpu&#xff0c;RAM&#xff0c;ROM&#xff0c;定时器&#xff0c;中断系统&#xff0c;通讯接口&#xff0c; 用于信息采集处理硬件设备控制&#xff1b; 8051内核所以带了这…

手把手教你做基于stm32的红外、语音、按键智能灯光控制(上)

目录&#xff1a; 1.系统实现目标2.硬件选型和软件准备2.1. 硬件选型2.2 软件准备 3. 硬件IO表4.各个模块的驱动函数4.1. 红外遥控模块4.2. 按键模块4.3. LED灯4.4. BH1750光照度传感器4.5. 红外检测模块 1.系统实现目标 本文所设计的基于单片机的灯光控制系统主要由模式选择功…

【C++】树型结构关联式容器:map/multimap/set/multisetの使用指南(27)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.键值对二.关联式容器&#xff06;序列…

国产API调试插件:Apipost-Helper

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…