动态排序,取top n这样的需求,可以说是BI项目的标配。本文将介绍一种简单有效的动态排序方式。 先看效果:
开发页面如下:
原理: 列表是通过序号这一列进行排序的,序号这一列的内容由参数控制,点击列名上的“↑”将改变序号的内容。从而实现动态排序。
参考: http://www.ibm.com/developerworks/cn/analytics/library/ba-1605-cognosreportjs/index.html
实现:在列表的查询中新建新建列对应的排序项 内容为
新建“序号”查询计算项:
拖入值提示对应参数px1,并做如下设置:
js代码内容
1
<div style="display:none">
2
</div>
3
<script>
//获取 cognos 中的值提示对象
var form=getFormWarpRequest();
var sortItem=form._oLstChoicesSORT1;
function sortIt(flag){
if(flag==1){
sortItem[0].checked=true;
}else if(flag==2){
sortItem[1].checked=true;
}else if(flag==3){
sortItem[2].checked=true;
}else if(flag==4){
sortItem[3].checked=true;
}else{
sortItem[4].checked=true;
}
promptButtonFinish();
}
</script>
4到8都是非常类似的,传递不同值让单选按钮组选中不同项
<u onclick=sortIt(1) style="cursor:hand;text-decoration:none">↑</u>
至此,开发完成!
-----------------------------------------------总结--------------------------------------------
这样做不仅实现了动态排序,而且通过序号进行过滤可以方便的取到top n的数据。 通过修改rank函数能进行倒序。
Cognos,BI技术交流群 347488829。
Tableau,BI技术交流群 161474757
欢迎加入讨论交流。