如何使用前端表格控件实现数据更新?
前言
小编之前分享过一篇文章叫《如何使用前端表格控件实现多数据源整合?》(可以放上文章的链接)。今天,继续为大家介绍如何使用前端表格控件来更新已连接的数据源信息。
环境准备
SpreadJS 前端表格控件新版本新增了一款报表插件,该插件基于 SpreadJS 本身强大的表格能力,在 DataManager 数据关系引擎的助力下,全新的报表插件让报表和数据录入用户有了全新的能力和体验,快速完成报表和数据录入功能的搭建,相对之前,能节省大量的开发成本,此外,报表 还支持数据输入、分页、数据筛选、排序、条件格式化等功能。
一、设置数据源
设置数据源方式有三种:远程数据源、本地数据源、本地json文件,详细内容可以参考上一篇文章《如何使用前端表格控件实现多数据源整合?》
二、更新数据源
目前,SpreadJS支持两种方式更新数据源,分别是AutoSync和Batch模式。
上一篇系列文章介绍过通过addTable接口的remote、schema、data属性实现数据源的添加url数据源,这篇文章小编将继续介绍如何通过addTable接口的autoSync和batch属性别设置自动同步模式和批量处理模式。
- 自动同步autoSync
这种模式主要适用于低频的数据操作场景。
1.1 接口准备
首先设置一个数据源:
let studentList = [ {id: 1, name: "张三", age: 7, sex: '男'}, {id: 2, name: "李四", age: 8, sex: '女'}, {id: 3, name: "小王", age: 7, sex: '男'}, {id: 4, name: "小韩", age: 8,sex: '女'}, {id: 5, name: "小明", age: 7, sex: '男'}, ];
对应的 NodeJS 后端接口数据为:
//读取 app.get("/student", (req, res) => { res.json(studentList); }); //新增 app.post("/student", (req, res) => { let item = req.body; studentList.push(item) res.json(item); }); //修改 app.put("/student", (req, res) => { let info = req.body; studentList.forEach((item, index) => { if (item.id === info.id) { studentList[index] = info } }) res.json(info); }); //删除 app.delete("/student", (req, res) => { let info = req.body && req.body[0]; studentList.forEach((item, index) => { if (item.id === info.id) { studentList.splice(index, 1) } }) res.json({succeed: true}); });
1.2 数据源设置
其中autoSync表示在自动同步模式下,数据更改将同步到服务器,此时在remote中设置增删改数据的接口,如下代码所示:
spread.dataManager().addTable('student', { autoSync:true, remote: { read: {method: 'get', url: 'http://localhost:3000/student'}, create: {method: 'post', url: 'http://localhost:3000/student'}, update: {method: 'put', url: 'http://localhost:3000/student'}, delete: {method: 'delete', url: 'http://localhost:3000/student'} } });
通过上述代码,我们设置了四个http请求,分别对应read读取,create新增,update修改,delete删除的接口。
上面是通过代码的方式设置,那么如何通过 UI 的方式设置?
具体操作方式可以如下图所示:
打开SpreadJS在线表格编辑器,点击"数据"->"数据源",选择表名,勾选自动同步,【读取】、【创建】、【删除】和【批量处理】分别代表代码中的read读取,create新增,update修改和delete删除。
1.3 创建报表
设置好数据后,我们来创建一个学生报表,如下动图所示:
通过上图,我们可以利用向导快速创建一个模板,当然也可以导入Excel/sjs模板:
创建好报表后,我们进行填报设置。
1.4 填报设置
按上图所示,先点击"填报设置",在弹窗中点击"添加"按钮,接下来选择数据源 table 表,然后点击"智能添加字段" ,最后选择 id 为主键。
1.5 数据填报
在填报设置好之后,我们就可以进行数据填报了
1.5.1 修改
将张三的年龄改为30 ,修改后发现左上角有红色标记,用来标脏。右键点击"提交"。
成功修改后,发现红色标记消失,同时在控制台中发现调用了学生修改接口,且接口返回200。
此时去查询学生列表,张三的年龄已被修改
1.5.2 新增/删除
注意,新增的时候要为id设置一个默认值=SJS.UUID()
接下来的操作可以看下面的动图
至此,我们就完成了学生表的基本数据填报工作。
这时候,有小伙伴就会问,那如果想要批量对数据更新呢,没有关系,我们有批处理模式
- 批量处理batch
这种模式主要适用于数据经常被操作的场景。它将按顺序存储每一行的操作,然后将所有的修改打包成一个集合,一次性发送到服务器,以节省网络资源。
2.1 接口准备
同样,我们在nodejs服务中,设置一个批处理的接口,还是再来看下这张图
student.post("/student/batchUpdate", (req, res) => { let obj = [] const resultArray = req.body resultArray.forEach((item, index) => { obj[index] = { "succeed": true } if (item.type === 'update') { let _index = item.sourceIndex studentList[_index] = item.dataItem } else if (item.type === 'insert') { studentList.push(item.dataItem) obj[index].data = item.dataItem } else if (item.type === 'delete') { let _index = item.sourceIndex studentList.splice(_index, 1) } }) res.json(obj); });
上面的代码表示根据返回的数据类型,做相应的操作,如果是新增,需要返回新增的数据。
2.2 数据源设置
batch表示在批处理模式下,数据更改将保留在数据源中,此时在remote中批处理的接口,如下代码所示:
let studentTable = spread.dataManager().addTable('student', { batch:true, remote: { read: {method: 'get', url: 'http://localhost:3000/student'}, batch:{method: 'post', url: 'http://localhost:3000/student/batchUpdate'} } });
那么UI上怎么设置呢?
2.3 创建报表/填报设置
操作方法和上一步【数据源设置】一致。
2.4 数据填报
总结
以上就是使用前端表格控件实现数据更新的全过程,如果您想了解更多信息,欢迎点击这里查看。
扩展链接:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
深度体验与测评openGauss 6.0.0新版本
本文分享自华为云社区《openGauss 6.0.0新版本安装测评》,作者:马顺华。 前言 近日,备受瞩目的openGauss 6.0.0版本正式上线,作为国产数据库的佼佼者,openGauss一直致力于为用户提供高效、稳定的数据库解决方案。恰逢openGauss社区举办的第七届openGauss技术文章征集活动正式开启,我有幸亲身体验了这一新版本,并在此分享我的安装及使用测评。 一、安装体验 openGauss 6.0.0版本在安装方面进行了重大改进,推出了全新的一站式交互安装功能。这一功能极大地简化了安装流程,降低了用户的学习成本。在安装过程中,用户只需通过交互界面输入数据库的相关信息,系统便会自动生成xml配置文件,并自动进行数据库的初始化安装。相比之前的版本,这一改变无疑是一大亮点。 在实际安装过程中,我按照提示逐步操作,整个过程流畅无阻。值得一提的是,openGauss 6.0.0版本还解除了对root用户的依赖,进一步提升了安装的安全性。安装完成后,我成功启动了数据库服务,并进行了基本的测试。 二、使用体验 性能优化:openGauss 6.0.0版本在性能方面进行了优化,...
- 下一篇
华为云短信服务教你用C++实现Smgp协议
本文分享自华为云社区《华为云短信服务教你用C++实现Smgp协议》,作者:张俭。 引言&协议概述 中国联合网络通信有限公司短消息网关系统接口协议(SGIP)是中国网通为实现短信业务而制定的一种通信协议,全称叫做Short Message Gateway Interface Protocol,用于在短消息网关(SMG)和服务提供商(SP)之间、短消息网关(SMG)和短消息网关(SMG)之间通信。 Perl的IO::Async模块提供了一套简洁的异步IO编程模型。 SGIP 协议基于客户端/服务端模型工作。由客户端(短信应用,如手机,应用程序等)先和短信网关(SMG Short Message Gateway)建立起 TCP 长连接,并使用 SGIP 命令与SMG进行交互,实现短信的发送和接收。在SGIP协议中,无需同步等待响应就可以发送下一个指令,实现者可以根据自己的需要,实现同步、异步两种消息传输模式,满足不同场景下的性能要求。 时序图 连接成功,发送短信 连接成功,从SMGW接收到短信 协议帧介绍 SGIP Header Message Length:长度为4字节...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能