因业务需要在报表展示页面自定义点击展示排序方式。
解决方案如下:
第一步:创建如下图HTML项目
第二步:设置提示框属性如下图:(静态选项内容填写交叉表或者列表当中需要自定义排序的列)
静态选项内容如下图:
第三步:添加排序数据项,哪个列需要排序,就写哪个列(cognos自带函数rank,asc / desc ,默认为desc)。此处我对收入数据项进行降序排列。如设置多个数据排序,重复此步骤。
第四步:再次拖一个数据项,对排序进行判断。?px1?为第二步提示框名称。?px1?='values'为提示框设置的静态选项内容。
case when ?px1?=1
then ([rank1])
when ?px1?=2
then ([rank2])
when ?px1?=3
then ([rank3])
when ?px1?=4
then ([rank4])
when ?px1?=5
then ([rank5])
when ?px1?=6
then ([rank6])
when ?px1?=7
then ([rank7])
when ?px1?=8
then ([rank8])
when ?px1?=9
then ([rank9])
when ?px1?=10
then ([rank10])
when ?px1?=11
then ([rank11])
when ?px1?=12
then ([rank12])
when ?px1?=13
then ([rank13])
else
([rank14])
end
第五步:设置提示框左右HTML项目内容,如下图:
代码如下:
<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 if(flag==5){ sortItem[4].checked=true; } else if(flag==6){ sortItem[5].checked=true; } else if(flag==7){ sortItem[6].checked=true; } else if(flag==8){ sortItem[7].checked=true; } else if(flag==9){ sortItem[8].checked=true; } else if(flag==10){ sortItem[9].checked=true; } else if(flag==11){ sortItem[10].checked=true; } else if(flag==12){ sortItem[11].checked=true; } else if(flag==13){ sortItem[12].checked=true; } else{ sortItem[13].checked=true; } promptButtonFinish(); } </script>
第六步:设置交叉表列HTML内容,如下图:
代码如下:
<u οnclick=sortIt(1) style="cursor:hand;text-decoration:none" > <img src="../images/down.png" style="width:11px;height:11px;"> </u>
第七步:选中行进行排序,如下图:
至此所以功能全部完成。
效果如下:
备注:页面在首次加载时不点击排序条件,提示框条件选择无法选择点击完成 ,原因是需要给排序首次加载默认值 。
方案:在提示页面添加html项目,添加如下js代码
fw._oLstChoicespaixu.options[2].selected=true;