JS实现决策报表中点击标题排序

编辑
文档创建者:chuan (73711 )     浏览次数:3493次     编辑次数:11次     最近更新:jiangsr 于 2018-07-24     

目录:

1. 描述编辑

决策报表中想要实现点击标题进行排序,并且可以刷新报表块。

2. 思路编辑

1)单列排序:参考根据点击次数奇偶性排序之数值型,可以根据参数值的不同来决定升序还是降序。这里也可以此思路进行实现,定义一个参数,如果参数值为1的时候,就升序,参数值为0的时候,按照数据列的负数进行升序排序,即数据列降序;并且根据参数值的不同刷新报表块。

2)多列排序:参考多列排序给最左端单元格设置扩展后排序的公式;参考JS实现决策报表内报表块局部刷新/翻页每次点击标题时都给报表赋值达到动态排序的效果;

3. 操作步骤编辑

3.1 示例一

1)制作报表

新建决策报表并拖入报表块,新建数据查询ds1:SELECT * FROM 订单 limit 15

拖入订单ID字段,报表块样式设置如下:

222

2)设置超级链接

右击A2单元格,添加超级链接-JavaScript脚本,添加参数a,值为公式:if($a = 1, 0, 1),如下:

222
js代码如下:

var re=_g().getWidgetByName("report0"); re.gotoPage(1,"{a:"+a+"}",true);


3)设置排序

双击A3单元格,选择高级,在排序顺序处选择升序,公式值为if($a==1,$$$,-$$$),如下图:

222

4)效果查看

保存模板,预览效果如下:

222
222

222

3.2 示例二(多列排序)

1)数据准备

新建决策报表,添加数据集ds1:SELECT EMPID,EMPNAME,BIRTHDATE,HEIGHT FROM EMPLOYEE limit 10

2)报表设计

拖入一个报表块,报表块样式设置如下:

222

3)设置超链

右击A2单元格,添加超级链接-JavaScript脚本,新增JS并添加参数aflag,如下:

222
js代码如下:

var re = _g().getWidgetByName("report0"); re.gotoPage(1, "{a:" + a + ",flag:" + flag + "}", true);


同理,给D2单元格添加超级链接-JavaScript脚本,新增JS并添加参数b、flag,如下:
222
js代码如下:
var re = _g().getWidgetByName("report0"); re.gotoPage(1, "{b:" + b + ",flag:" + flag + "}", true);
注:给ID和身高分别设置js给报表块report0传参,在这里用a,b和flag参数值来区分点击的是哪一个标题,点击的次数。
4)设置排序

选择A3单元格,设置单元格属性,在扩展后排序处选择升序,公式值为if($flag = 1, if($a = 1, A3, -A3), if($b = 1, D3, -D3)),如下图:

222

注:通过if语句,对flag值进行判断,然后再对a,b,c的参数值进行判断实现对应按照哪个单元格数据进行排序。
5)可能遇到的问题
点击超链之后出现下图这种报错:
222
或者日志报错:
222
原因是超链的A3单元格是字符串类型的数字,如果要排序需要把它转换成数字类型的,双击A3单元格,点击高级,在自定义显示中,将值改为公式:TOINTEGER($$$)
222
如果需要排序的是日期类型的数据,用tointeger(format(I2, "yyyyMMddHHmmss")把它转换成数字类型的进行排序
如果遇到只有第一次点击可以生效的超链,可能是参数a只能获取到第一次,此时我们把参数a的赋值方式修改成这样的
var a="${a}"; a=a=="1"?0:1;
222

6)效果查看

点击决策报表预览,效果如下图:

222

4. 预览效果编辑

4.1 PC端预览效果

1)示例一:单列排序

222

2)示例二:多列排序

222

4.2 移动端预览效果

1)示例一:单列排序

APP预览效果:

222

H5预览效果:

222

2)示例二:多列排序

APP预览效果:

222

H5预览效果:

222

5. 已完成模板编辑

1)示例一
已完成的模板,可参见:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\JS\表单JS实例\11-JS实现决策报表中点击标题排序-示例一.frm
2)示例二
已完成的模板,可参见:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\JS\表单JS实例\11-JS实现决策报表中点击标题排序-示例二.frm

附件列表


主题: 二次开发
如果您认为本文档还有待完善,请编辑

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

此页面有帮助吗?