找回密码
 立即注册

QQ登录

只需一步,快速开始

bouncyBear

注册会员

7

主题

37

帖子

94

积分

注册会员

积分
94
bouncyBear
注册会员   /  发表于:2019-9-16 15:05  /   查看:5030  /  回复:8
1金币
本帖最后由 bouncyBear 于 2019-9-17 10:35 编辑

image.png174899291.png
图中第二行是原来的第一行,我在第二行右键新增了一行,发现,新增的第一行的校验都失效了,但是如果在别的行新增一行,校验是保留的,请问问这个问题怎么解决?

最佳答案

查看完整内容

您好: 这个问题的原因是这样的: 首先您这边做了设置sheet.setDataValidator(0, 1, sheet.getRowCount(),1, validator);这样的话相当于给一个范围设置了数据验证。 再一个,SpreadJS的插入逻辑仿照Excel是在当前行之前插入空行。 但是如果是在第一行插入一个空行,相当于在第一行之前插入,所以不属于上面设置数据验证的范围,所以数据验证无法加上。 再者如果是在除了第一行外的其他行插入空行,那么是属于上述范 ...

8 个回复

正序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-9-17 14:01:44
9#
bouncyBear 发表于 2019-9-17 10:35
已经搞定了。非常感谢

不客气,后面如果再有问题也鼓励您以悬赏贴的形式进行发帖求助。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2019-9-17 12:15:31
8#
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
bouncyBear
注册会员   /  发表于:2019-9-17 10:35:04
7#
已经搞定了。非常感谢
回复 使用道具 举报
bouncyBear
注册会员   /  发表于:2019-9-16 17:19:57
5#
您看,插入第一行的时候是没有校验的,但是点击第二行右键插入的时候,是有校验的。。
回复 使用道具 举报
bouncyBear
注册会员   /  发表于:2019-9-16 17:16:38
4#
您要求的附件已上传

jiaoyan.ssjson

574 Bytes, 下载次数: 804

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-9-16 16:36:53
3#
导出ssjson的代码可以参考:

  1. // "ss"是spreadJS所在div的id
  2. var spread = GC.Spread.Sheets.findControl("ss");

  3. // 下载ssjson文件方法
  4. var funDownload = function (content, filename) {
  5.     var eleLink = document.createElement('a');
  6.     eleLink.download = filename;
  7.     eleLink.style.display = 'none';
  8.     // 字符内容转变成blob地址
  9.     var blob = new Blob([content]);
  10.     eleLink.href = URL.createObjectURL(blob);
  11.     // 触发点击
  12.     document.body.appendChild(eleLink);
  13.     eleLink.click();
  14.     // 然后移除
  15.     document.body.removeChild(eleLink);
  16. };

  17. var testJson = JSON.stringify(spread.toJSON({includeBindingSource:true}));
  18. funDownload(testJson, "test.ssjson");
复制代码

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-9-16 16:35:28
2#
您好,默认情况下,新增行不会带入原数据行中的数据校验,您描述的“在别的行新增一行,校验是保留的”我不是很理解,麻烦您
1、上传一个能重现问题的ssjson文件;
2、描述一下重现问题的操作步骤;
我们先重现一下问题,这样就能帮您解决问题,谢谢~
回复 使用道具 举报
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-9-16 15:05:53
来自 6#
您好:

这个问题的原因是这样的:

首先您这边做了设置sheet.setDataValidator(0, 1, sheet.getRowCount(),1, validator);这样的话相当于给一个范围设置了数据验证。

再一个,SpreadJS的插入逻辑仿照Excel是在当前行之前插入空行。

但是如果是在第一行插入一个空行,相当于在第一行之前插入,所以不属于上面设置数据验证的范围,所以数据验证无法加上。

再者如果是在除了第一行外的其他行插入空行,那么是属于上述范围的,所以会加入数据验证。

如果想要在第一行插入的时候也加入验证可以监听RowChanged事件,在事件中进行判断,然后加入插入验证的逻辑。

  1. sheet.bind(GC.Spread.Sheets.Events.RowChanged, function (e, info) {
  2.      if(info.propertyName == "addRows" && info.row == 0){
  3.            //判断是否是在第一行插入
  4.       }
  5. });
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部