找回密码
 立即注册

QQ登录

只需一步,快速开始

sherclock

初级会员

34

主题

77

帖子

259

积分

初级会员

积分
259

[已处理] SpreadJS数据验证

sherclock
初级会员   /  发表于:2018-12-26 10:13  /   查看:2588  /  回复:3
如题:
image.png822713622.png 这一列我要预绑定200行以上,我现在用的是
                       for (var j = inthang; j <inthang+200; j++) {
                            sheet.setDataValidator( j,1, dv1);
                       }这种语法,一个单元格一个单元格的绑定,如果数据量在500行 几分钟都加载不出来,有没有一个绑定一整列的语法?提高一个速度?

3 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-26 11:35:40
沙发
您好,首先您检查一下您的代码,在执行设置数据验证前后,

有没有加suspendPaint() 和 resumePaint()?

我这边使用如下代码,没能重现性能的问题:

  1. var spread = GC.Spread.Sheets.findControl("ss");
  2. var sheet = spread.getActiveSheet();
  3. sheet.setRowCount(500);
  4. var spreadNS = GC.Spread.Sheets;
  5. var dv1 = new spreadNS.DataValidation.createListValidator("Fruit,Vegetable,Food");
  6.             dv1.inputTitle("Please choose a category:");
  7.             dv1.inputMessage("Fruit, Vegetable, Food");
  8. sheet.suspendPaint();
  9. for (var i = 0; i < 500; i++) {
  10.     sheet.setDataValidator(i, 2, dv1);
  11. }
  12. sheet.resumePaint();
复制代码


另外,如果要设置一整列,不需要用循环,可以把for循环块整个替换为以下代码:

  1. sheet.setDataValidator(-1, 2, dv1);
复制代码
回复 使用道具 举报
sherclock
初级会员   /  发表于:2018-12-26 11:51:18
板凳
KevinChen 发表于 2018-12-26 11:35
您好,首先您检查一下您的代码,在执行设置数据验证前后,

有没有加suspendPaint() 和 resumePaint()?
...

非常感谢完美解决了我的问题 。我的问题是 resumePaint() 没有加这一句,后来改成了sheet.setDataValidator(-1, 2, dv1);  谢谢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-12-26 11:56:43
地板
sherclock 发表于 2018-12-26 11:51
非常感谢完美解决了我的问题 。我的问题是 resumePaint() 没有加这一句,后来改成了sheet.setDataValidat ...

非常高兴解决了您的问题,本帖我结贴了,您有新的问题欢迎发新贴交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部