帆软事件中使用JS,contentPane.getWidgetsByName()提示未定义

var a = this.getValue();

var status = contentPane.getWidgetsByName("status");

if(a.length>0){

if(typeof(status.length)!="undefined"){

for(var i=0;i <= status.length;i++){

contentPane.setCellValue(0,1,i,a);

}

}else{

contentPane.setCellValue("B2",null,a);

}

}

if(a.length==0){

contentPane.getWidgetsByName("status").reset();

//alert(a.length);

}

上面是完整的JS,我发现如果最后面的alert语句被注释掉,就会提示标题上的错误,。如果不注释掉,就会弹出提示框后,能够正常的重置。请教一下这是什么原因啊

PS:后面发现是只要一行数据的时候才能被重置,一旦出现多行,就会提示报错。

PS2:问题好像是找到了,contentPane.getWidByName只能识别一行,扩展行数超过一行就会报错。

小小萌新 发布于 2021-9-29 10:02 (编辑于 2021-9-29 19:38)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2021-9-29 10:07

那直接把语句删除,不要注释试试

  • 小小萌新 小小萌新(提问者) 吧alert删除吗?删除后就是直接报错提示了
    2021-09-29 10:17 
  • snrtuemc snrtuemc 回复 小小萌新(提问者) 不会把,有alert正常,注释删除就报错。。。
    2021-09-29 10:19 
  • snrtuemc snrtuemc 回复 小小萌新(提问者) 还有,注意,这个代码需要填报预览模式才可以
    2021-09-29 10:22 
  • 小小萌新 小小萌新(提问者) 回复 snrtuemc 就是填报预览,而且我单独使用按钮控件,用contentPane.getWidgetsByName(\\\"status\\\").reset();就可以成功
    2021-09-29 10:25 
  • snrtuemc snrtuemc 回复 小小萌新(提问者) 原因在于contentPane.getWidgetsByName,多行时候,你获取多个值,直接reset,就出错,你也讲了一行没问题。不管一行多行,需要循环重置,用下面语句:var a=contentPane.getWidgetsByName(\"status\");for(var i=0,i
    2022-04-01 19:49 
最佳回答
0
浪兔Lv7初级互助
发布于2021-9-29 10:08

加一个setTimeout延时,让这段代码等待页面加载完毕之后在加载

  • 小小萌新 小小萌新(提问者) 不行,设置了1000,但是在赋值为空的时候就直接提示报错了。最气人的是我单独使用按钮控件,使用contentPane.getWidgetsByName(\"status\").reset();就可以成功。
    2021-09-29 10:24 
最佳回答
0
shirokoLv6资深互助
发布于2021-9-29 10:42

能给报表看看吗?你这个status控件是在参数栏还是单元格?

  • 小小萌新 小小萌新(提问者) 单元格里面,好像是用contentPane.getWidgetsByName只能识别一行数据,不能识别多行的,一旦扩展多行,就会报错。后面用了个each遍历解决的。
    2021-09-29 19:36 
  • 4关注人数
  • 844浏览人数
  • 最后回答于:2021-9-29 19:38
    请选择关闭问题的原因
    确定 取消
    返回顶部