因业务需要在报表展示页面自定义点击展示排序方式。
解决方案如下:
第一步:创建如下图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 onclick=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;
浙公网安备 33010602011771号