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

相关文章

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

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

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

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.问题出现原因各