请教大神:如何给报表块添加加载结束事件

最近遇到一个棘手的事情,有一奇葩业务,需求导出的数据和展示的数据样式不一致,报表展示时只展示重要的几列,但是导出的excel要全部列。首先肯定不能用条件属性了,因为它导出和展示是一致的,我就在报表块的初始化后事件里,写隐藏列,如下,

_g().getWidgetByName("report1").setColWidth(1,0)

JS写的列宽为零,导出时并不会生效,本以为完美实现,但是还没等我高兴完,我发现了一个问题,因为是frm,组件之间联动肯定不会少,当其他组件联动这个报表块后,并不会触发“初始化后”事件,也就是只要一联动,展示时就会出现全部列,我勒个去。

 

所以,我想请教下,论坛的大神们,如何给报表块添加一个“加载完成”事件,我把隐藏的JS写在这个事件里,就真正完美了,现在只有一个“初始化后”和“点击”两个事件,

FineReport 哎艾希 发布于 2022-4-27 18:17
1min目标场景问卷 立即参与
回答问题
悬赏:6 F币 5人赏过 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-4-27 19:43

这样设置一下行不行?

预览的勾去掉。。打印与导出要勾上。。。

image.png

  • 哎艾希 哎艾希(提问者) 这样设置我也试过了,确实预览时不会展示,导出时展示,但是有个致命问题是:虽然不显示内容,但是列宽依然存在,展示时有大量空白
    2022-04-28 09:01 
  • CD20160914 CD20160914 回复 哎艾希(提问者) 那就写两个模板吧。。。工作总是要做,在没有找到你认为完美的办法前,做两个模板,虽然麻烦点,但是这个最简单的也是最快能够完成你目前的需求了。。先把工作中的问题解决了再说。
    2022-04-28 09:04 
最佳回答
0
shirokoLv6资深互助
发布于2022-4-27 18:19

报表块的初始化后事件,就是加载完成事件啊

  • 哎艾希 哎艾希(提问者) 不是的,第一次查询时会执行,但是另一个组件向他传参时(就是联动),这个报表块会有加载动画,当加载动画结束,加载完成时,并不会执行“初始化后”里面的代码,目前的现状就是这样,打开报表很完美,但是不能点任何组件跟他联动,一点就出现全部列,求解救
    2022-04-27 18:25 
  • shiroko shiroko 回复 哎艾希(提问者) 联动的同时重写一遍初始化事件
    2022-04-27 18:37 
  • 哎艾希 哎艾希(提问者) 回复 shiroko 要写延时函数才行,要不然不生效,但是延时多少毫秒呢?写少了不生效,写多了会出现下面这种情况,先显示全部列,然后才会隐藏那几列,它要加载多少毫秒无法把控啊,
    2022-04-27 18:41 
  • shiroko shiroko 回复 哎艾希(提问者) 还想跟你说可以用_g().getWidgetByName(\'report0\').fireEvent(\'afterinit\') 触发初始化事件,你要考虑延迟的话,没办法了
    2022-04-27 18:52 
  • shiroko shiroko 回复 哎艾希(提问者) 要么你写个循环,20秒内1秒执行一次,执行20次
    2022-04-27 18:54 
最佳回答
0
magicsongLv6初级互助
发布于2022-4-27 18:48

看了看,我怎么觉得可以使用条件属性,动态展示所需数据,把不需要展示的列动态隐藏,导出的时候要全部的就选择把隐藏列导出,应该可以满足吧

  • 哎艾希 哎艾希(提问者) 怎么把隐藏的列导出?cpt里倒是有设置的地方,frm里的报表块没找到可以设置的地方啊
    2022-04-27 18:51 
  • 4关注人数
  • 536浏览人数
  • 最后回答于:2022-4-27 19:43
    请选择关闭问题的原因
    确定 取消
    返回顶部