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

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

python展开嵌套列表的多种方法

《python展开嵌套列表的多种方法》本文主要介绍了python展开嵌套列表的多种方法,包括for循环、列表推导式和sum函数三种方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、嵌套列表格式二、嵌套列表展开方法(一)for循环(1)for循环+append()(2)for循环+pyPhWiFd

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定