多sheet中,调用其他sheet按钮事件的问题

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

为方便研究,我把CPT上传,多sheet还真是个难题,FR也有不完善的地方

跨sheet提取数据.cpt

FineReport nhb2318 发布于 2021-7-27 19:41 (编辑于 2021-7-29 10:53)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
woyan2008Lv5见习互助
发布于2021-7-28 18:47

个人觉得,你与其那样做,还不如,就使用 一个 sheet,然后这个sheet有几个需要 判断的,  哪怕是 连续性的判断,或者并联的判断,都采用  打开  servlrt的方法,那样,做起来还好些,维护也好维护,很多 帆软不能直接实现的,我都是采用的这一个思路,  那样反而会更好,个人建议,可以那样做,

好维护,思路也清晰,我公司的那些,我就那样做的!

  • nhb2318 nhb2318(提问者) Error:很抱歉,导入EXCEL格子数超过限制,请减少导入数据量。若您是管理员,可于智能运维-内存管理-模板限制中更改此项限制。
    2021-07-28 23:23 
  • zsh331 zsh331 回复 nhb2318(提问者) 模板限制-https://help.fanruan.com/finereport/doc-view-3630.html
    2022-01-25 18:14 
最佳回答
0
用户a8068717Lv4初级互助
发布于2021-7-28 08:51(编辑于 2021-7-31 20:12)

multi-sheet.7z

点一个sheet,第一个sheet会写入该sheet第一个单元格的内容

  • nhb2318 nhb2318(提问者) 我把后面的sheet都挨个点了一遍,应该是加载到了呀,为什么还不行呢?
    2021-07-28 09:27 
  • nhb2318 nhb2318(提问者) 根本不是这个问题,在同一个sheet内可以用这个contentPane.getWidgetByName(\"按钮名称\").fireEvent(\"click\");代码,跨sheet就不行了,我觉得应该是代码不对,不是加载不加载的问题
    2021-07-28 09:34 
最佳回答
0
free_zzLv6中级互助
发布于2021-7-28 09:20

你直接在sheet0里写后面几个sheet的操作不行?为啥要调用点击

最佳回答
0
杨朝健Lv5中级互助
发布于2021-7-28 12:44(编辑于 2021-7-28 12:46)

总体情况的按钮js,其他页面的按钮js不用

for(var k=0;k<_g().lgps.length;k++){

  if(k!=0){//首页不动

    _g().$contentPane.data('TabPane').tabBtns[k].events.click.push(function(){

      //把其他页面的按钮js绑定到切换sheet的tab上

      console.log('日志输出');

      var index = $(".fr-sheetbutton-container").index($(".fr-sheetbutton-container-active"));

      var sheetname = $(".fr-sheetbutton-container").eq(index).text();

      for (var i = 0; i < 100; i++) {

        if (_g().getCellValue(0, 2, i) == sheetname) {

          _g().setCellValue(0, 4, i, "OK") //写导入结果

  //alert(i);

  break;

    }

      }

    });

_g().loadSheetByIndex(k);//把每个页面都加载一遍

  }

}

_g().loadSheetByIndex(0);//最后换回首页

  • nhb2318 nhb2318(提问者) 其实,你是把写OK的代码直接写进去了,但是这个还达不到效果,我还是需要触发后面各个sheet上的按钮。 我为什么会有这么奇葩的思路?是因为我要解决这样一个问题:多sheet提交的问题,设置多sheet表CPT时,每个sheet都可以设置一个填报属性,全部提交完成才触发填报成功事件,如果我的sheet很多,数据量也很大,我无法掌握提交的进度,所以我就在sheet0上,设置了一个,填报成功一个表就写一个OK。我把后面几个表的填报属性都删了,然后用按钮来提交,提交后可以用回调函数来判断是否成功,如果提交成功就要在sheet0“总体情况”表上对应的行填写OK。所以还必须触发一下table1表里的B1按钮,B1按钮来执行提交,再反馈给sheet0。目的就是要把提交完成的进度反映的第一张表的总体情况里 思路是这么来的。 要达到这个目的,还有别的办法吗?如果能在sheet0页面分步来提交后面几张表的数据,是不是更省事?怎么写?
    2021-07-28 16:20 
  • qiqits1984 qiqits1984 for(var k=0;k<_g().lgps.length;k++){ 中的 _g().lgps.length 得到sheet 数量的方法,是如何得来的?
    2021-07-29 14:32 
  • 杨朝健 杨朝健 回复 qiqits1984 扒JS代码
    2021-07-29 14:48 
  • 5关注人数
  • 1605浏览人数
  • 最后回答于:2021-7-31 20:12
    请选择关闭问题的原因
    确定 取消
    返回顶部