SpreadJS v14.0正式版下载

一、SpreadJS数据绑定介绍

前言

SpreadJS 作为一个纯前端类Excel表格控件,有着和Excel高度类似的功能,但同时也有很多Excel所不具备的独有功能。其中,数据绑定就是SpreadJS最常用的功能之一。

下面,我们将详细为您介绍SpreadJS数据绑定的原理、实现方式、操作以及扩展应用。

SpreadJS数据绑定的原理

SpreadJS是一个纯前端控件,本身不包含任何后端结构,所以无法直接完成数据库绑定。SpreadJS本身绑定的数据源是用户传递到前端的一个json格式的DataSource,后端的业务逻辑用户可以自行去处理。

这样做的好处是低耦合、前后端分离,服务器端专门处理业务逻辑,前端只负责页面展示功能,无论安全性还是规范性都更符合常见的开发习惯。

在SpreadJS的数据绑定过程中,无论是通过设计器还是代码,都需要在SpreadJS中建立与数据源DataSource一一映射的关系。

SpreadJS数据绑定是以工作表(Sheet)为单位的绑定,一个sheet只能绑定一个数据源,但多个sheet可以绑定同一个数据源。

当设置好映射关系之后,我们将前端接收到的数据源通过对应的接口进行填充,之后SpreadJS会根据映射关系自动的将相关联的数据展示到对应的位置。

SpreadJS数据绑定本身是一个双向绑定,顾名思义,就是当用户更新了视图的内容 (绑定项在页面上面的相关单元格内容)之后,数据源也会同步发生变化。利用这样的机制,我们可以更方便的获取用户在页面上更新的数据。

在线填报,作为SpreadJS的典型使用场景之一,便很好的利用了SpreadJS的数据绑定模式,我们通过双向绑定实时获取用户填报的数据,并将其进行存储。

SpreadJS数据绑定的方式

SpreadJS提供三种数据绑定的方式:表单绑定、单元格绑定、表格绑定。

单元格绑定

从字面上意思来看,单元格绑定就是通过一个单元格绑定数据源中的某个字段。这种方式在一些填报单据中比较常见。

表单绑定和表格绑定

表单绑定与表格绑定从字面上很容易混淆,他们之间的区别分为以下几个方面:

1、 绑定区域:表单绑定区域指的是Excel中的Sheet,也就是工作表:

表单绑定就是将数据源绑定在整个表单上,表单绑定数据源的行数决定了该sheet绑定完成之后初始的行数,sheet每新增一行或者减少一行都会造成数据源的变化。

表格绑定区域指的是Sheet中创建的table:

表格绑定会将数据源绑定在Sheet创建的table中,数据源的行数决定了绑定完成后table的初始行数,而只有table行数的变更才会造成数据源的变化并不是整个sheet。

2、 数据源格式:

文章前面提到,数据绑定中一个Sheet只能绑定一个数据源,所以表单绑定数据源的每一个字段都对应了表单的某一列。所以数据源是一个JSON数组,类似下面这样:

var dataSource = [
{ ID:0, Name:'A', Info1:'Info0' },
{ ID:1, Name:'B', Info1:'Info1' },
{ ID:2, Name:'C', Info1:'Info2' },
];

表格绑定,因为一个sheet中可以存在多个table,每一个table都可以绑定数据源中的一个字段,所以它对应的数据源是一个JSON对象,而对象的每一个字段将是一个JSON数组,每一个字段对应绑定一个table,类似下面这样:

var dataSource = {
table1: [
{ orderDate: '1/6/2013', item: 'Pencil', units: 95, cost: 1.99 },
{ orderDate: '4/1/2013', item: 'Binder', units: 60, cost: 4.99 },
{ orderDate: '6/8/2013', item: 'Pen Set', units: 16, cost: 15.99 }
],
table2: [
{ orderDate: '1/6/2013', item: 'Pencil', units: 95, cost: 1.99 },
{ orderDate: '4/1/2013', item: 'Binder', units: 60, cost: 4.99 },
{ orderDate: '6/8/2013', item: 'Pen Set', units: 16, cost: 15.99 }
]
};

以上就是SpreadJS 数据绑定的原理,以及三种绑定方式。

二、SpreadJS表单绑定操作

前言

在第一节中,我们对数据绑定做了一个大致的介绍,在第二节中我们将着重为大家介绍如何完成SpreadJS的数据绑定。这里首先介绍如何进行表单级别的绑定操作:

使用前须知

  1. 表单绑定无法跟其他两种绑定混合使用:

    表单绑定,绑定的是整个sheet,无法在其基础上再去绑定某个单元格或者表格。

  2. 表单绑定无法在设计器中设置,只能通过代码来进行绑定设置:

    通过Spread设计器只能设置表格绑定和单元格绑定。

详细操作

SpreadJS的表单绑定是将前端获取的数据源DataSource绑定到整个表单上,由于数据源是一个二维表格形式的结构,所以将会以列为单位绑定数据源中的每一个字段,这里通过设置autoGenerateColumns 可以控制是否自动生成绑定列,下面将以自动生成和手动生成两种方式分开详细介绍:

自动生成绑定列

autoGenerateColumns 设置为true时即为自动生成绑定列的模式。

首先,我们假设前端接收的数据源为如下结构(数据源的获取可以为任何方式,比如常用的:ajax,getjson等等):

var dataSource = [
{ ID:0, Name:'A', Info1:'Info0' },
{ ID:1, Name:'B', Info1:'Info1' },
{ ID:2, Name:'C', Info1:'Info2' },
];

获取需要绑定的工作表对象并声明为sheet,接下来通过这段代码,设置绑定模式为自动生成绑定列模式:

sheet.autoGenerateColumns = true;

接下来,我们将数据源通过setDataSource方法设置数据源,并传给该sheet对象。

sheet.setDataSource(dataSource);

执行完上述代码后,页面将显示如下内容:

从上图可以看到,列头被自动定义成了数据源中对应字段的名称。列头会根据绑定的字段而变化,这也是表单绑定的其中一个重要特征。

当我们在表格中进行填报、编辑之后,我们可以通过getDataSource方法来获取此时的数据源对象。例如,我们在上面显示的页面上进行填报、编辑后:

SpreadJS | 下载试用

纯前端表格控件SpreadJS,可满足 .NET、Java、App 等应用程序中的 Web Excel 组件开发、数据填报、在线文档、图表公式联动、类 Excel UI 设计等业务场景,并在数据可视化、Excel 导入导出、公式引用、数据绑定、框架集成中无需大量代码开发和测试,极大降低了企业研发成本和项目交付风险。

当我们通过sheet.getDataSource()获得的数据源对象如下图所示:

本文转载自葡萄城

一、SpreadJS数据绑定介绍

前言

SpreadJS 作为一个纯前端类Excel表格控件,有着和Excel高度类似的功能,但同时也有很多Excel所不具备的独有功能。其中,数据绑定就是SpreadJS最常用的功能之一。

下面,我们将详细为您介绍SpreadJS数据绑定的原理、实现方式、操作以及扩展应用。

SpreadJS数据绑定的原理

SpreadJS是一个纯前端控件,本身不包含任何后端结构,所以无法直接完成数据库绑定。SpreadJS本身绑定的数据源是用户传递到前端的一个json格式的DataSource,后端的业务逻辑用户可以自行去处理。

这样做的好处是低耦合、前后端分离,服务器端专门处理业务逻辑,前端只负责页面展示功能,无论安全性还是规范性都更符合常见的开发习惯。

在SpreadJS的数据绑定过程中,无论是通过设计器还是代码,都需要在SpreadJS中建立与数据源DataSource一一映射的关系。

SpreadJS数据绑定是以工作表(Sheet)为单位的绑定,一个sheet只能绑定一个数据源,但多个sheet可以绑定同一个数据源。

当设置好映射关系之后,我们将前端接收到的数据源通过对应的接口进行填充,之后SpreadJS会根据映射关系自动的将相关联的数据展示到对应的位置。

SpreadJS数据绑定本身是一个双向绑定,顾名思义,就是当用户更新了视图的内容 (绑定项在页面上面的相关单元格内容)之后,数据源也会同步发生变化。利用这样的机制,我们可以更方便的获取用户在页面上更新的数据。

在线填报,作为SpreadJS的典型使用场景之一,便很好的利用了SpreadJS的数据绑定模式,我们通过双向绑定实时获取用户填报的数据,并将其进行存储。

SpreadJS数据绑定的方式

SpreadJS提供三种数据绑定的方式:表单绑定、单元格绑定、表格绑定。

单元格绑定

从字面上意思来看,单元格绑定就是通过一个单元格绑定数据源中的某个字段。这种方式在一些填报单据中比较常见。

表单绑定和表格绑定

表单绑定与表格绑定从字面上很容易混淆,他们之间的区别分为以下几个方面:

1、 绑定区域:表单绑定区域指的是Excel中的Sheet,也就是工作表:

表单绑定就是将数据源绑定在整个表单上,表单绑定数据源的行数决定了该sheet绑定完成之后初始的行数,sheet每新增一行或者减少一行都会造成数据源的变化。

表格绑定区域指的是Sheet中创建的table:

表格绑定会将数据源绑定在Sheet创建的table中,数据源的行数决定了绑定完成后table的初始行数,而只有table行数的变更才会造成数据源的变化并不是整个sheet。

2、 数据源格式:

文章前面提到,数据绑定中一个Sheet只能绑定一个数据源,所以表单绑定数据源的每一个字段都对应了表单的某一列。所以数据源是一个JSON数组,类似下面这样:

var dataSource = [
{ ID:0, Name:'A', Info1:'Info0' },
{ ID:1, Name:'B', Info1:'Info1' },
{ ID:2, Name:'C', Info1:'Info2' },
];

表格绑定,因为一个sheet中可以存在多个table,每一个table都可以绑定数据源中的一个字段,所以它对应的数据源是一个JSON对象,而对象的每一个字段将是一个JSON数组,每一个字段对应绑定一个table,类似下面这样:

var dataSource = {
table1: [
{ orderDate: '1/6/2013', item: 'Pencil', units: 95, cost: 1.99 },
{ orderDate: '4/1/2013', item: 'Binder', units: 60, cost: 4.99 },
{ orderDate: '6/8/2013', item: 'Pen Set', units: 16, cost: 15.99 }
],
table2: [
{ orderDate: '1/6/2013', item: 'Pencil', units: 95, cost: 1.99 },
{ orderDate: '4/1/2013', item: 'Binder', units: 60, cost: 4.99 },
{ orderDate: '6/8/2013', item: 'Pen Set', units: 16, cost: 15.99 }
]
};

以上就是SpreadJS 数据绑定的原理,以及三种绑定方式。

二、SpreadJS表单绑定操作

前言

在第一节中,我们对数据绑定做了一个大致的介绍,在第二节中我们将着重为大家介绍如何完成SpreadJS的数据绑定。这里首先介绍如何进行表单级别的绑定操作:

使用前须知

  1. 表单绑定无法跟其他两种绑定混合使用:

    表单绑定,绑定的是整个sheet,无法在其基础上再去绑定某个单元格或者表格。

  2. 表单绑定无法在设计器中设置,只能通过代码来进行绑定设置:

    通过Spread设计器只能设置表格绑定和单元格绑定。

详细操作

SpreadJS的表单绑定是将前端获取的数据源DataSource绑定到整个表单上,由于数据源是一个二维表格形式的结构,所以将会以列为单位绑定数据源中的每一个字段,这里通过设置autoGenerateColumns 可以控制是否自动生成绑定列,下面将以自动生成和手动生成两种方式分开详细介绍:

自动生成绑定列

autoGenerateColumns 设置为true时即为自动生成绑定列的模式。

首先,我们假设前端接收的数据源为如下结构(数据源的获取可以为任何方式,比如常用的:ajax,getjson等等):

var dataSource = [
{ ID:0, Name:'A', Info1:'Info0' },
{ ID:1, Name:'B', Info1:'Info1' },
{ ID:2, Name:'C', Info1:'Info2' },
];

获取需要绑定的工作表对象并声明为sheet,接下来通过这段代码,设置绑定模式为自动生成绑定列模式:

sheet.autoGenerateColumns = true;

接下来,我们将数据源通过setDataSource方法设置数据源,并传给该sheet对象。

sheet.setDataSource(dataSource);

执行完上述代码后,页面将显示如下内容:

从上图可以看到,列头被自动定义成了数据源中对应字段的名称。列头会根据绑定的字段而变化,这也是表单绑定的其中一个重要特征。

当我们在表格中进行填报、编辑之后,我们可以通过getDataSource方法来获取此时的数据源对象。例如,我们在上面显示的页面上进行填报、编辑后:

SpreadJS | 下载试用

纯前端表格控件SpreadJS,可满足 .NET、Java、App 等应用程序中的 Web Excel 组件开发、数据填报、在线文档、图表公式联动、类 Excel UI 设计等业务场景,并在数据可视化、Excel 导入导出、公式引用、数据绑定、框架集成中无需大量代码开发和测试,极大降低了企业研发成本和项目交付风险。

当我们通过sheet.getDataSource()获得的数据源对象如下图所示:

本文转载自葡萄城

纯前端表格控件SpreadJS——轻松搞定数据绑定相关推荐

  1. 纯前端表格控件SpreadJS V12.1 隆重登场,专注易用性,提升用户体验

    ​ 一款优秀的开发工具,在更新迭代中,除了要满足不同场景的业务需求,也需不断优化已有功能,尤其是细节方面,要能为用户带来使用体验和开发效率的提升. 作为一款备受业界专家和开发者认可的纯前端类Excel ...

  2. js固定表格行列_纯前端表格控件SpreadJS V14.0发布:组件化编辑器+数据透视表

    SpreadJS 是一款基于 HTML5 的纯前端表格控件,兼容 450 种以上的 Excel 公式,具备"高性能.跨平台.与 Excel 高度兼容"的产品特性,可为用户提供高度类 ...

  3. autojs遍历当前页面所有控件_纯前端表格控件SpreadJS V14.0发布:组件化编辑器+数据透视表 - 葡萄城开发工具...

    SpreadJS 是一款基于 HTML5 的纯前端表格控件,兼容 450 种以上的 Excel 公式,具备"高性能.跨平台.与 Excel 高度兼容"的产品特性,可为用户提供高度类 ...

  4. 纯前端表格控件SpreadJS V14.0发布:组件化编辑器+数据透视表

    SpreadJS 是一款基于 HTML5 的纯前端表格控件,兼容 450 种以上的 Excel 公式,具备"高性能.跨平台.与 Excel 高度兼容"的产品特性,可为用户提供高度类 ...

  5. 纯前端表格控件SpreadJS以专注业务、提升效率赢得用户与市场

    提起华为2012实验室,你可能有点陌生. 但你一定还对前段时间华为的那封<海思总裁致员工的一封信>记忆犹新,就在那篇饱含深情的信中,我们知道了华为为确保公司大部分产品的战略安全和连续供应, ...

  6. 纯前端表格控件SpreadJS:电子表格技术实践 - 内存

    在前端表格中,表格可以是松散布局的一种UI表达方式,它的最小描述单元是一个单元格,也就是我们常说的CellBase. 点击获取SpreadJS工具下载 常用的数据结构有二维数组和对象数组,对于二维数组 ...

  7. 纯前端表格控件SpreadJS新手入门指南 - 复制粘贴

    点击获取SpreadJS v15.0官方正式版下载 复制粘贴到Excel 设置Workbook的options属性的allowCopyPasteExcelStyle属性,可设置复制粘贴是否带样式.选择 ...

  8. java数据透视表插件_纯前端表格控件SpreadJS:新增数据透视表插件等,完美呈现强大的Excel数据分析能力...

    SpreadJS是一款基于 HTML5 的纯前端电子表格控件,兼容 450 种以上的 Excel 公式,凭借其 "高性能.跨平台.与 Excel 高度兼容"的产品特性,备受以华为. ...

  9. 纯前端表格控件SpreadJS开发案例:收入损益表(附源码)

    SpreadJS是一款基于 HTML5 的原生JavaScript组件,兼容 450 种以上的 Excel 公式,提供高度类似 Excel 的功能,主要用于开发 Web Excel 组件,实现多人协同 ...

  10. SpreadJS 纯前端表格控件应用案例:畅捷通财务T-UFO报表

    由畅捷通推出的财务T-UFO报表,是用友T+Cloud的两大功能模块之一,提供类Excel风格,用于制定个性化报表,并支持自定义取数,借助该报表,财务人员可按部门.个人.往来单位.存货.项目设置辅助核 ...

最新文章

  1. JavaEE SSH集成框架(两) struts2 本地加载dtd文件,action组态
  2. 解决svn Authorization failed错误
  3. Android通过意图使用内置的音频播放器
  4. mysql-installer-web-community和mysql-installer-communityl两个版本的区别
  5. 编写代码模拟三次密码输入的场景。
  6. 截取安卓直播APP中的视频流 -央视频或者斗鱼直播下载+
  7. JNI 调用 DLL
  8. 微型计算机硬件调研报告,计算机硬件市场调研报告
  9. [产品设计]如何绘制业务流程图(下)
  10. 学校计算机教学楼命名大全,学校楼名及释义集锦
  11. 在线Spirte图定位工具,自动生成CSS
  12. 有一个已经排好序的数组,要求输入一个数后,按原来排序规律将它插入数组中。
  13. Android Build 获取手机信息
  14. 2022年全球及中国血清降钙素原市场专项调研与竞争调查分析报告
  15. 企业人才测评结果的三种导向分析
  16. Vertica资源池
  17. VM原理(个人见解)
  18. 蚂蚁金服开放平台-支付宝新版接口的参数设置
  19. 计算机辅助设计的技术论文,【计算机病毒论文】谈计算机辅助设计课程微课化教学(共3741字)...
  20. 网络编程全解(Java)

热门文章

  1. centos7设置键盘类型_CentOS7设置中文输入法
  2. 计算机硬盘型号怎么看,硬盘编号怎么看
  3. python可以跨平台吗_python是跨平台的么
  4. centos查询 硬盘序列号查询_关于使用java执行shell脚本获取centos的硬盘序列号和mac地址...
  5. Mobile Terminal 316s-7 使用技巧
  6. 画三线格子的高效方法,不用再一个格子一个格子的选中啦
  7. 面经个人向(算法岗)
  8. 数字图像处理_冈萨雷斯
  9. 数字图像处理 冈萨雷斯(第四版)韦伯比的理解
  10. c++用化简命题逻辑公式的方法设计一个5人表决开关电路,要求3人以上(含3人)同意则表决通过