获取报表块某一列的值,并把它在URL中传值

决策报表A中有报表块,报表块中第一列的值更加筛选变化,假设当前条件下它的值有1,2。需求是点击一个按钮控件,跳转另一报表B,且把当前的1,2值传给这个报表,即url中一个参数有多个值被传。

首先在报表B中的数据集设置了参数x,

select * from tabelx where  1=1 ${if(len(x)==0 ,"" ,"and xx in ('" + x + "')")} 。

问题1:决策报表中的按钮控件需要写点击的js,首先如何获取报表块某一列的值?

(单元格倒是可以_g().getWidgetByName('report0').getCell(1,1)

问题2:得到那一列的值后,应该是个数组形式,那如何url传一个参数,里面带有多个值?

单值传的话,window.open(url报表地址 +"&参数名 = "+ x );

FineReport king9901 发布于 2023-9-13 09:52
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-9-13 09:55

1、找个单元格比如A2 用公式 A1[!0]  并隐藏 传递的时候传递A2的值

2、正常用就是了只有参数值没有特殊符号 相当于XXX&参数名=1,2,3,4

  • king9901 king9901(提问者) 可以直接用吗?我取到那一列的值了,假设是参数x,它是个数组应该,是x=[1,2,3]的形式,然后跳转传参下一报表,是这样的 window.open(url +\"&class_id = \"+ x); 可以直接这样用?
    2023-09-13 12:49 
  • Z4u3z1 Z4u3z1 回复 king9901(提问者) 传字符串。子表接收后再转数组
    2023-09-13 12:54 
最佳回答
0
runnerLv7资深互助
发布于2023-9-13 09:55
最佳回答
0
snrtuemcLv8专家互助
发布于2023-9-13 09:55(编辑于 2023-9-13 09:56)

获取写法如下

image.png

多值传递

超链时一个参数传递多个值-https://help.fanruan.com/finereport/doc-view-4253.html

  • king9901 king9901(提问者) 问题1按大佬的方法的确搞定了,但是传参的理解有点问题,报表块内那一列的值,是一行一个,不是把值放到一个单元格,是这样的形式: 字段 1 2 3 现在是得到这一列的1,2,3,想把这3个值赋给某个参数x,都给传递给另外一张报表B里对应的参数,是in的形式,那这个报表B里在数据集设置了参数x,也是in的形式,问这个怎么传
    2023-09-13 12:45 
  • snrtuemc snrtuemc 回复 king9901(提问者) 你接受到字符串后,可以公式处理这个字符串,split函数拆分,replace函数替换都可以
    2023-09-13 13:30 
最佳回答
0
用户k6280494Lv6资深互助
发布于2023-9-13 10:03

直接超链post传参

image.png

最佳回答
0
king9901Lv4见习互助
发布于2023-9-13 21:20

结合评论区大佬意见,说说自己的方案,首先是拖一个按钮控件,添加参数x获取报表块某一列的值,这个值是数组,所以要先给他里面的值拼成字符串,且是以‘,’分割的,因为被跳转传参的子报表数据集中是in的形式,以‘,’分割的,所以参数x我的写法是:JOINARRAY(UNIQUEARRAY(report2~A3),"','")。

得到值了,就可以跳转传参了,虽然说是传多个参数,但我们这里将一系列值变成了字符串,如这种x=1','2','3,

然后在控件里写js:

var url = "${servletURL}?viewlet=报表路径名字.cpt" 

window.open(url +"&class_id="+ x );  -- class_id是参数名

这里相当于我们把class_id=1','2','3,而在子表数据集中,where 1=1 ${if(len(class_id)==0 ,"" ,"and 字段名 in ('" + class_id + "')")}

结合起来就是这样:and 字段名 in ('    1','2','3     ')

  • 3关注人数
  • 184浏览人数
  • 最后回答于:2023-9-13 21:20
    请选择关闭问题的原因
    确定 取消
    返回顶部