历史版本4 :多列动态排序 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

上一节中介绍了点击数据列标题实现升序降序排序,那么,如果有多个列想实现这样的升序降序功能呢,即点击订单ID是根据订单ID升序排序,再点击订单ID则根据订单ID降序排序,接着点击运货费则根据运货费升序排序,以此类推。

2. 解决思路编辑

由上一节的扩展后排序来实现,即点击数据列标题时,将该数据列所在单元格作为参数传递过去,在扩展后排序公式中接收该参数,根据参数的不同,实现不同的排序,下面详细介绍。

3. 示例编辑

点击年度投资计划时,按照年度投资计划进行排序,点击财政安排数时按照财政安排数排序,点击单位自筹时按照单位自筹排序。
3.1 打开模板
打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\advanced\Multidatasource\Multi_2.cpt
3.2 超级链接参数设置
年度投资计划财政安排数单位自筹以及其他资金所在单元格设置超级链接。
  • 以年度投资计划为例
选中年度投资计划所在的D2单元格,右键,选择超级链接,添加一个动态参数,增加3个参数,如下图:
其他的三个标题所在单元格同样设置,不同的是asc和desc参数的值为该标题对应的数据列,如下表:
标题ascdesca
年度投资计划D4-D4if($a==1,0,1)
财政安排数E4-E4if($a==1,0,1)
单位自筹F4-F4if($a==1,0,1)
其他资金G4-G4if($a==1,0,1)
注:参数a的值需选择公式,而参数asc和desc的值不可以选择公式,只能是字符串。参数a的意义在于,点击一次超级链接就替换一次a的值,那么在下面进行排序就可以根据a的值来决定是升序还是降序。
设置完成之后如下图:
3.3 扩展后排序
选中B4单元格,在单元格属性表>扩展属性中选择扩展后,选中升序,输入公式if($a==1,eval($asc),eval($desc)),如下图:
注:公式的意义是,如果a的值为1,则根据参数asc进行升序排序,如果a的值不为1,则根据desc的值降序排序,asc和desc的值根据点击的数据列标题变化而变化。
另:如果需要排序的不是数字,而是日期,形如2013-06-25日期数据,那么直接像上面这样操作,是无法实现排序功能的,因为以上的公式均是针对数字而言的,对日期排序的话,只需要将日期转化为数字即可,也就是说在设置超级链接时,参数asc变为tointeger(replace(D4,"-","")),参数desc的值变为-tointeger(replace(D4,"-",""))
3.4 效果查看
点击分页预览,效果如下:
已完成模板请参照%FR_HOME%\WebReport\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\Order_5.cpt

在线查看示例效果请点击Order_5.cpt