历史版本7 :JS实现决策报表中点击标题排序 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
目录:
1.描述编辑
决策报表中想要实现点击标题进行排序,并且可以刷新报表块。
2.示例一编辑
2.2 制作报表
新建决策报表并拖入报表块,新建数据查询ds1:SELECT * FROM 订单 limit 15
拖入订单ID字段,报表块样式设置如下:
2.3 设置超链
右击A2单元格添加超级链接,新增JS并添加参数a,如下:
var re=_g().getWidgetByName("report0");
re.gotoPage(1,"{a:"+a+"}",true);
2.4 设置排序
双击A3单元格,选择,在排序顺序处选择,公式值为if($a==1,$$$,-$$$),如下图:
2.5 效果查看
点击预览模板
3.示例二(多列排序)编辑
3.1 实现思路
参考多列排序给最左端单元格设置扩展后排序的公式;
参考JS实现决策报表内报表块局部刷新/翻页每次点击标题时都给报表赋值达到动态排序的效果;
3.2 制作决策报表
新建决策报表块,添加5个内置数据集,如下:
报表块样式设置如下:
3.3 设置超链
右击E3单元格添加超级链接,新增JS并添加参数a及flag,如下:
var re=_g().getWidgetByName("report5");
re.gotoPage(1,"{a:"+a+",flag:"+flag+"}",true);
var re=_g().getWidgetByName("report5");
re.gotoPage(1,"{b:"+b+",flag:"+flag+"}",true);
var re=_g().getWidgetByName("report5");
re.gotoPage(1,"{c:"+c+",flag:"+flag+"}",true);
注:给三个达成率分别设置js给报表块report5传参,在这里用a,b,c和flag参数值来区分点击的是哪一个标题,点击的次数。
1.点击超链之后出现下图这种报错
3.4 设置排序
选择A3单元格,设置单元格属性,在扩展后排序处选择,公式值为if(flag = 1, if($a = 1, E4, -E4), if(flag = 2, if($b = 1, F4, -F4), if($c = 1, G4, -G4))),如下图:
注:通过if语句,对flag值进行判断,然后再对a,b,c的参数值进行判断实现对应按照哪个单元格数据进行排序。
3.5 可能遇到的问题
原因是你超链的d2单元格是字符串类型的数字,如果要排序需要把它转换成数字类型的,我们此时只需把最左侧单元格的扩展后排序公式改成这种类型的if(flag = 1, if($a = 1, 1*E4, -1*E4), if(flag = 2, if($b = 1, 1*F4, -1*F4), if($c = 1, 1*G4, -1*G4)))
2.如果需要排序的是日期类型的数据,用tointeger(format(I2, "yyyyMMddHHmmss")把它转换成数字类型的进行排序
3.如果遇到只有第一次点击可以生效的超链,可能是参数a只能获取到第一次,此时我们把参数a的赋值方式修改成这样的
var a="${a}";
a=a=="1"?0:1;
3.6 效果查看
点击决策报表预览,效果如下图:
已完成模板,可参见:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\frm\表单多列排序.frm。