单表单嵌套多个数据源并显示记录,行内编辑(layui)

2024-03-10 00:58

本文主要是介绍单表单嵌套多个数据源并显示记录,行内编辑(layui),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

layer表格官方 https://www.layui.com/doc/modules/table.html

前后端数据格式以对象数组,其他方式同理

@RequestMapping(value="/show/info",method = RequestMethod.POST)@ResponseBodypublic Page show(HttpServletRequest request) {   int page = Integer.parseInt(request.getParameter("page"));int limit = Integer.parseInt(request.getParameter("limit"));//总数int start = (page-1)*limit;int size = limit;int count = uploadPicMapper.count(start,size);              List<UploadPic> pList = uploadPicMapper.get(start,size);     Page pag = new Page();pag.setCode(0);pag.setCount(count);pag.setMsg("");pag.setData(pList);return pag;  }@RequestMapping(value="/add/jinK/info",method = RequestMethod.POST)public ModelAndView saveJinK(@RequestBody UploadPic[] uploadPic) {int len = uploadPic.length;for(int i =0;i<len;i++) {UploadPic upload = new UploadPic();upload.setId(uploadPic[i].getId());upload.setName(uploadPic[i].getName());upload.setUrl("");uploadPicMapper.insert(upload);}return new ModelAndView(new MappingJackson2JsonView(), new HashMap<String, Object>() {{put("success", true);put("message", "完成");}}); }

数据格式:

[{"id": 16,"name": "50","url": "","LAY_TABLE_INDEX": 0
}, {"id": 17,"name": "35","url": "","LAY_TABLE_INDEX": 1
}, {"id": 18,"name": "8","url": "","LAY_TABLE_INDEX": 2
}]

只根据layer文档,实现基础操作,做参考

<html>
<head>
<title>表单</title>
<style>
#bothForm{min-height:680px;overflow:hidden;
}#jinK{min-height:300px;
}#yuanL{min-height:300px;
}#tieG{min-height:50px;
}#jinZ{min-height:180px;
}
.tg{margin-top:20px;float:right;padding-right:5px;
}
.jz_class{float:left;width:49%;min-height:80px;
}
.footer_qm{min-height:150px;
}
</style>
</head>
<body><p>日期:1</p><div id="bothForm" style="width:805px;border:1px solid black;margin:10px auto;"><div id="jinK" style="width:400px;border-right:1px solid black;float:left;"><span>进库</span>    <table id="jinK_F" lay-filter="test1"></table><button class="layui-btn layui-btn-primary layui-btn-fluid" id="addJinK">新增</button></div><div id="yuanL" style="width:400px;float:left;"><span>原料</span>    <table id="yuanL_F" lay-filter="test2"></table><button class="layui-btn layui-btn-primary layui-btn-fluid" id="addYuanL">新增</button></div><div id="tieG" style="width:100%;border-top:1px solid black;border-bottom:1px solid black;margin-top:5px;float:left;"><span class="tg">铁管数(支):<input type="text" /></span><span class="tg">总重(KG):<input type="text" /></span></div><div id="jinZ" style="width:100%;border-bottom:1px solid black;float:left;">    <div class="jz_class"><span class="tg">型号:<input type="text" style="width:50px;"/>/自重:<input type="text" style="width:50px;"/>/总重:<input type="text" style="width:50px;"/></span></div><div class="jz_class"><span class="tg">型号:<input type="text" style="width:50px;"/>/自重:<input type="text" style="width:50px;"/>/总重:<input type="text" style="width:50px;"/></span></div><hr style="color:black;"/><div class="jz_class"]><span class="tg">型号:<input type="text" style="width:50px;"/>/自重:<input type="text" style="width:50px;"/>/总重:<input type="text" style="width:50px;"/></span></div><div class="jz_class"><span class="tg">型号:<input type="text" style="width:50px;"/>/自重:<input type="text" style="width:50px;"/>/总重:<input type="text" style="width:50px;"/></span></div></div><div class="footer_qm" style="width:100%;float:left;"><button class="layui-btn layui-btn-primary layui-btn-fluid" id="submit" style="margin-top:115px;">保存</button></div></div><script>layui.use('table', function(){var table = layui.table;table.render({elem: '#jinK_F',width:400,url: '${ctx}/layui/show/info',page: false,limit:20,method:'post',cols: [[ {field: 'id', title: '货品类型', width:250,edit:true},{field: 'name', title: '重量(KG)', width:145,edit:true}]],parseData: function(res){ //res 即为原始返回的数据return {"code": res.code, "msg": res.msg, "count": res.count, "data": res.data };}});table.on('row(test1)', function(obj){console.log(obj.tr) //得到当前行元素对象console.log(obj.data) //得到当前行数据});$("#addJinK").click(function(){var dataBak = [];   //定义一个空数组,用来存储之前编辑过的数据已经存放新数据var tableBak = table.cache.jinK_F; //获取之前编辑过的全部数据,前提是编辑数据是要更新缓存,stock_add_table 为表格的idfor (var i = 0; i < tableBak.length; i++) {dataBak.push(tableBak[i]);      //将之前的数组备份}dataBak.push({   "id": "","name": "","url":""});table.reload("jinK_F",{url:'',data:dataBak   // 将新数据重新载入表格})});table.render({elem: '#yuanL_F',width:400,url: '${ctx}/layui/show/info',page: false,limit:20,method:'post',cols: [[ {field: 'id', title: '货品类型', width:250,edit:true},{field: 'name', title: '重量(KG)', width:145,edit:true}]],parseData: function(res){ return {"code": res.code, "msg": res.msg, "count": res.count, "data": res.data };}});$("#addYuanL").click(function(){var dataBak = [];   //定义一个空数组,用来存储之前编辑过的数据已经存放新数据var tableBak = table.cache.yuanL_F; //获取之前编辑过的全部数据,前提是编辑数据是要更新缓存,stock_add_table 为表格的idfor (var i = 0; i < tableBak.length; i++) {dataBak.push(tableBak[i]);      //将之前的数组备份}dataBak.push({   "id": "","name": "","url":""});table.reload("yuanL_F",{url:'',data:dataBak   // 将新数据重新载入表格})});//提交$("#submit").click(function(){$.ajax({type:'post',url:'${ctx}/layui/add/jinK/info',dataType:"json",contentType:"application/json", data:JSON.stringify(layui.table.cache.jinK_F),success:function(data){if (data.success == true) {$.messager.alert("操作提示", data.message);} else {$.messager.alert("操作提示", data.message);}}});})});</script>
</body>
</html>

备注:

table.render({
elem: ‘#demp’
,url: ‘’
,parseData: function(res){ //res 即为原始返回的数据
return {
“code”: res.status, //解析接口状态
“msg”: res.message, //解析提示文本
“count”: res.total, //解析数据长度
“data”: res.data.item //解析数据列表
};
}
//,…… //其他参数
});

该参数非常实用,为 layui 2.4.0 开始新增(官方提示),该参数比较容易与数据绑定,推荐使用

图示

这篇关于单表单嵌套多个数据源并显示记录,行内编辑(layui)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792506

相关文章

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和