找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-8-4 12:19  /   查看:2475  /  回复:0
本帖最后由 KevinChen 于 2020-8-4 12:19 编辑

这篇文章的标题看起来像是一个很简单的问题,
然而就是这个问题,困扰了很多新入坑的小伙伴,
原因是大家用FlexGrid这种“传统的”grid表格时,会不自觉带入Excel的操作习惯
—— 希望单元格的数据完全按照自己希望的类型、格式、是否为空等方式来设置。

既然是传统的二维grid数据,每一列代表一个key字段,而数据类型是字段的天然属性,所以默认表格对某一列的数据类型的要求是固定的,
比如,当数据源中某列数据都是date日期类型时,默认这整列的数据都应该是date类型。
相当于这里自动加入了“数据类型验证”。

那么能否改变这种限制呢?其实很简单,在配置column时,加入isRequired属性,
并设置为false即可:
https://demo.grapecity.com.cn/wijmo/api/classes/wijmo_grid.column.html#isrequired

另外,在使用代码设置grid某个单元格的值时,可以采用setCellData方法实现,
这里又是一个容易造成误解的地方,当setCellData传入的value与单元格数据类型不同时,
默认会执行失败,并返回false。我们看到的效果就是执行了代码,但数据没进去。

如果设置了isRequired:false,就不会出现这个问题,除此之外,这个方法其实还有两个参数:
https://demo.grapecity.com.cn/wijmo/api/classes/wijmo_grid.flexgrid.html#setcelldata
  • 可选 coerce: boolean
    Whether to change the value automatically to match the column's data type.

  • 可选 invalidate: boolean
    Whether to invalidate the grid to show the change.




最后一个参数,就是控制是否“忽视”单元格的校验机制的,这里我们就可以传true,来强制
我们设置的值生效。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部