30分钟,你可以做什么?
可以风卷残云的饱餐一顿;可以简单地打扫一下房间;或者可以跳10十遍刘畊宏《本草纲目》毽子操。
而今天,本葡萄要带你在30分钟内完成一套拥有增删改查表格系统的前后端搭建!

在日常的系统开发中,表格(Grid)是最常见的数据表达形式,而表格中“增删改查”又是最常见的功能之一。所以在日常开发过程中,快速构建表格增删改查的框架将会成为影响开发效率最重要的部分之一。
为了实现本次30分钟快速构建表格系统的目标,我们需要回顾年初的文章中,我们介绍的集算表的相关内容。

什么是集算表?

为了让前端的表格不但具备类Excel的公式计算能力,同时还拥有传统表格控件的高性能,我们希望将传统的高性能结构化表格 (Grid) 与公式计算引擎 (CalcEngine)结合在一起。
为了实现这样的设计,我们首次提出了数据管理容器 (DataManager) 的概念,将原有在后端才具备的关系数据引擎,完全在前端实现,从而实现了在大量数据(百万行)的环境下,实现秒级的加载、排序、筛选,而这所有的操作,都能够完全在前端浏览器中,通过JavaScript 代码实现。
数据管理容器 (DataManager)不仅承担了数据存储与索引的功能,同时还实现了多数据表关系、视图、CRUD等功能。
集算表(TableSheet)则负责将数据管理容器 (DataManager)中整理好的数据、视图、关系,通过SpreadJS 本身的"Canvas画布"呈现在网页中。

在集算表的帮助下,电子表格中的数据管理器具备了直连数据源、数据关系(外键)管理和异步操作更新等功能,产品数据处理分析能力得到进一步提升。

综合集算表的功能特性,以下问题使用集算表将会变得很容易:

  • 加载后端数据到表格中,并进行分析、处理
  • 需要整合来自多个数据表(源)的数据并进行分析
  • 对后端提供的原始数据进行再加工(修改、计算等)和回写

实战开始

了解了集算表,接下来我们就正式开始内容搭建。

首先,我们对问题进行步骤拆解:
1、后端使用Spring Boot做快速搭建,创建一个spring boot web工程,下面是大致用到的dependencies

基本除了springboot自带的之外,额外引用了fastjson用于对一些复杂json格式进行处理。

2、构建前后台,可以选择前后端分离,或者结合的方式(例子中选中了前后端结合的方式),大致工程结构如下:

3、构建前端页面,前端页面的可以选择适合的框架(VUE,React,Angular,例子中使用源生JS进行构建),在页面中引入SpreadJS TableSheet(集算表)中的相关依赖

需在原本SpreadJS的依赖基础上引入gc.spread.sheets.tablesheet这个依赖。

4、构建前端集算表配置配置集算表的功能操作

var myTable = dataManager.addTable("myTable", {remote: {read: {url: "initDataManager"},batch: {url: "batchUpdateDataManager"}},batch: true,autoSync: false});

上述配置了读取和批量两个操作,读取设置是在指定地址下读取数据。而批量操作包含对数据的批量增删改。从而覆盖到整个增删改查逻辑。

var rowActions = GC.Spread.Sheets.TableSheet.BuiltInRowActions;var options = sheet.rowActionOptions();options.push(rowActions.removeRow,rowActions.saveRow,rowActions.resetRow,);sheet.rowActionOptions(options);

上述代码设置了页面上供用户进行操作的对应按钮(删除行,保存行,重置行)

myTable.fetch().then(function() {var view = myTable.addView("myView", [{ value: "id", caption:"编号", width: 80 },{ value: "firstname", caption:"姓", width: 100 },{ value: "lastname", caption:"名", width: 100 },{ value: "homephone", caption:"电话", width: 100 }]); sheet.setDataView(view);});

上述代码设置了表格的结构,对每一列进行了设置

var submitButton = document.getElementById('submit');submitButton.addEventListener('click', function() {sheet.submitChanges();});

通过设置一个提交的按钮,用于将批量的修改进行一次性提交。
5、后端构建对应的数据增删改查逻辑(实例中通过一个假数据构建一个list进行模拟,实际情况可以扩展持久层与真实的数据库进行交互)。

private static List<Employee> list = new ArrayList<Employee>();static {for(int i=0;i<10;i++) {Employee employee = new Employee();employee.setId(i);employee.setFirstname("FirstName"+i);employee.setLastname("LastName"+i);employee.setHomephone("HomePhone"+i);list.add(employee);}}@RequestMapping(value = "/initDataManager", method = RequestMethod.GET)@ResponseBodypublic List<Employee> initWorkBook() {return list;}@RequestMapping(value = "/batchUpdateDataManager", method = RequestMethod.POST)@ResponseBodypublic List<Map<String,Object>> batchUpdateDataManager(@RequestBody List<BatchManager> batchManagerList) {List<Map<String,Object>> reutrnList = new ArrayList<Map<String,Object>>();for (BatchManager batchManager : batchManagerList){Map<String,Object> returnMap = new HashMap<String,Object>();String type = batchManager.getType().toString();try{if (type.equals("update")){Employee employee = batchManager.getDataItem();int index = batchManager.getSourceIndex();Employee employeeSource = list.get(index);employeeSource.setId(employee.getId());employeeSource.setFirstname(employee.getFirstname());employeeSource.setLastname(employee.getLastname());employeeSource.setHomephone(employee.getHomephone());list.remove(index);list.add(index, employeeSource);returnMap.put("succeed", true);}else if (type.equals("insert")){Employee employee = batchManager.getDataItem();list.add(employee);returnMap.put("succeed", true);employee.setId(employee.getId()+10000);returnMap.put("data", employee);}else if (type.equals("delete")){int index = batchManager.getSourceIndex();list.remove(index);returnMap.put("succeed", true);}}catch(Exception e) {returnMap.put("succeed", false);}reutrnList.add(returnMap);}return reutrnList;}

这样,我们的框架就算搭建完成了。后面可以根据情况再做细微的调整和优化。总共耗时30分钟左右。
实例的代码可以参考附件,有兴趣的朋友可以下载自行参考搭建

关注葡萄城社区,回复“增删改查”,即可免费获取文内demo。

更多纯前端表格demo在线体验:
https://demo.grapecity.com.cn/spreadjs/gc-sjs-samples/index.html

如何在30分钟完成表格增删改查的前后端框架搭建相关推荐

  1. MySQL数据库基础表格——增删改查(下)

    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易,人间真情 目录 MyS ...

  2. 增删改查 HTML表格页面,表格增删改查.html

    表格增删改查 body{ background:#dddddd; text-align:center; } .list { display: inline-block; margin-top: 20p ...

  3. 纯JS+HTML+CSS实现表格增删改查翻页--模板文件管理

    纯JS+HTML+CSS实现表格增删改查翻页--模板文件管理 效果 页面 增 删 改 翻页 页面显示条数 查找 跳页 代码 结语 效果 话不多说,直接看效果,本次代码较为复杂,希望大家可以耐心阅读,不 ...

  4. html增删改后让table自动刷新,vue如何实现表格增删改查效果

    vue如何实现表格增删改查效果 发布时间:2021-04-23 14:34:54 来源:亿速云 阅读:90 作者:小新 小编给大家分享一下vue如何实现表格增删改查效果,相信大部分人都还不怎么了解,因 ...

  5. vue+element实现树状表格的增删改查;使用el-table树形数据与懒加载实现树状表格增删改查

    以下代码可以直接复制使用 一.情景: 列表是一个树状表格,可以无限添加下级,以及对列表的某一行进行增删改查(目前查没有写). 原博链接 二.本篇是在原博主的代码基础上添加了部分功能. 功能1: 给树状 ...

  6. 纯JS+HTML简单表格增删改查

    前言 欢迎大家来到我的博客,请各位看客们点赞.收藏.关注三连! 欢迎大家关注我的知识库,Java之从零开始 · 语雀 你的关注就是我前进的动力! CSDN专注于问题解决的博客记录,语雀专注于知识的收集 ...

  7. NodeJS 5分钟 连接MySQL 增删改查

    theme: smartblue 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情 本文简介 本文主要讲解在 Node.js 里如何连接 MySQL ,并 ...

  8. jQuery表格增删改查

    最近要处理一些前端的工作,重新学习了一下jQuery,感觉还是那么的锋利啊!!! 总结了一下对table的增删改查,写一篇留着以后自己recode. 1.首先我自己写了一个简单的div布局. 2.实现 ...

  9. layui+SpringBoot实现表格增删改查

    前言 本文将演示如何使用Springboot(后端框架)和layui(前端框架)将数据库中的数据渲染到前端页面,以及对前端页面的数据实现增删改. 效果图如下: 完整项目已上传至GitHub,项目地址: ...

最新文章

  1. CMS:听我的,生产环境上要这样配置JVM参数
  2. FreeBSD基金会添加新成员,梁莉成为第一位来自微软和中国的基金会董事
  3. Repeater、GridView等 操作XML
  4. magento2 所需要php 扩展,Magento2如何通过Composer安装插件扩展
  5. cat3 utp是不是网线_UTPCAT3网络双绞线规格型号
  6. python flask框架教程_Flask框架从入门到实战
  7. java 双重检查锁定_Java双重检查锁定
  8. Android 违规使用 Java,谷歌或面临 88 亿美元赔款
  9. Vue学习笔记之04-computed计算属性
  10. BZOJ 1565: [NOI2009]植物大战僵尸
  11. EDU 61 F. Clear the String 区间dp
  12. 计算机组成原理作业三
  13. 快手短视频去水印方法
  14. 数据分析 一文搞懂什么是RFM模型
  15. 网页只有在服务器上才能打开,为什么你的电脑只能上QQ,而打不开网页?我来告诉你...
  16. 基于知识图谱的智能问答机器人
  17. 记录:Ubuntu20.04中安装和设置VScode
  18. iframe 的使用理解
  19. BIOS入门基础------TXT
  20. python获取当天日期

热门文章

  1. 数据跨域交换成刚需 志翔科技助力企业数据安全合规
  2. 金山办公 服务端开发岗位 面经 2019.11.11(秋招)
  3. html怎么调整成苹方,web css 苹方字体设置
  4. 谷歌的android官方刷机,一加手机谷歌原生Android ROM包刷机教程
  5. 上市早不如巧,深度剖析嘉楠“两个第一”的内涵
  6. Android本地数据持久化:内部存储和外部存储
  7. 2020程序员VS码农,“金三银四”春招指南
  8. 构造器(有参、无参)
  9. [无私分享]最新网盘资源搜索站点
  10. NokiaS60系列的jes-lcdui1@异常的分析