单表单嵌套多个数据源并显示记录,行内编辑(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

相关文章

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

java实现多数据源切换方式

《java实现多数据源切换方式》本文介绍实现多数据源切换的四步方法:导入依赖、配置文件、启动类注解、使用@DS标记mapper和服务层,通过注解实现数据源动态切换,适用于实际开发中的多数据源场景... 目录一、导入依赖二、配置文件三、在启动类上配置四、在需要切换数据源的类上、方法上使用@DS注解结论一、导入

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd