cognos展示技巧(三)动态排序
来源:互联网 发布:淘宝在线客服在哪里 编辑:程序博客网 时间:2024/05/22 04:25
Cognos的排序做的实在是不怎么地,这两天借着比赛一时兴起,利用JavaScript实现了个排序的方法,个人感觉用起来比较方便,所以特地和大家分享一下
首先来说一下排序的方法,思路如下:增加一个数据项,该数据项根据参数进行判断,显示那个数据项的数据。然后将新增的数据项拖到列表中进行排序。再利用JavaScript将参数传递过去,实现排序。
开发界面如下:
Cognos的排序做的实在是不怎么地,这两天借着比赛一时兴起,利用JavaScript实现了个排序的方法,个人感觉用起来比较方便,所以特地和大家分享一下。(需要结合视频教程一起看)
首先来说一下排序的方法,思路如下:增加一个数据项,该数据项根据参数进行判断,显示那个数据项的数据。然后将新增的数据项拖到列表中进行排序。再利用JavaScript将参数传递过去,实现排序。
开发界面如下:
其中排序初始化HTML为核心代码,如下:
<script type="text/javascript"> var cvObject = eval("oCV" + getObjectName()); var lastSelected; function getObjectName() { return document.getElementById("cv.id").value; } function getRVContent() { var objName = getObjectName(); return eval("document.getElementById('RVContent" + objName + "');"); } function initSort(sortTableId) { /*说明:若报表中有提交操作的组件,比如完成button或自动提交的组件,则保持注释,若无,则将注释内容打开。这个很重要 cvObject.preProcessControlArray = []; cvObject.gbPromptRequestSubmitted = false; cvObject.bCanFinish = true; cvObject.bNextPage = true; cvObject.pageNavigationObserverArray = []; cvObject.rangeObserverArray = []; cvObject.multipleObserverArray = []; cvObject.datePickerObserverArray = []; cvObject.hasPromptKeyDown = false; */ initSortColumn(getSortTable(sortTableId, getRVContent())); } function getSortTable(sortTableId, rvContent) { var sortTable; var tables = rvContent.getElementsByTagName("table"); for (var i = 0; i < tables.length; i++) { if (tables[i].getAttribute("LID") == sortTableId) { sortTable = tables[i]; break; } } return sortTable; } function initSortColumn(sortTable) { var headRow = sortTable.tBodies[0].rows[0]; var divs,ascendDiv,descendDiv,cell; var sortType = document.getElementById("sort_Type").value; var sortColumn = document.getElementById("sort_Column").value; for (var i = 0; i < headRow.cells.length; i++) { cell = headRow.cells[i]; divs = cell.getElementsByTagName("DIV"); for (var j = 0; j < divs.length; j++) { if (divs[j].getAttribute("sortcolumn") != null) { divs[j].style.float="left"; if (divs[j].getAttribute("sortcolumn") == sortColumn) { if (sortType == 1) { ascendDiv = "<div onclick = \"sortColumn(1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumAscendOver\"></div>"; descendDiv = "<div onclick = \"sortColumn(-1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumDescendOut\"></div>"; } else { ascendDiv = "<div onclick = \"sortColumn(1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumAscendOut\"></div>"; descendDiv = "<div onclick = \"sortColumn(-1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumDescendOver\"></div>"; } } else { ascendDiv = "<div onclick = \"sortColumn(1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumAscendOut\"></div>"; descendDiv = "<div onclick = \"sortColumn(-1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumDescendOut\"></div>"; } divs[j].innerHTML = ascendDiv + descendDiv; break; } } } } function sortColumn(sortType, sortColumn) { var oRequest = new CCognosViewerRequest("forward"); oRequest.addParameter("p_sortType", sortType); oRequest.addParameter("p_sortColumn", sortColumn); cvObject.submitPromptValues(oRequest); } initSort("列表1");</script><style type="text/css"> .sortColumAscendOver { width: 20px; height: 20px; background-image: url( "../pat/images/sortAscending.gif" ); background-position: center; background-repeat: no-repeat; float:right; cursor: pointer; } .sortColumAscendOut { width: 20px; height: 20px; background-image: url( "../pat/images/sortAscending_disabled.gif" ); background-position: center; background-repeat: no-repeat; float:right; cursor: pointer; } .sortColumDescendOver { width: 20px; height: 20px; background-image: url( "../pat/images/sortDescending.gif" ); background-position: center; background-repeat: no-repeat; float:right; cursor: pointer; } .sortColumDescendOut { width: 20px; height: 20px; background-image: url( "../pat/images/sortDescending_disabled.gif" ); background-position: center; background-repeat: no-repeat; float:right; cursor: pointer; }</style>其中排序参数内容如下: '<input type="hidden" id="sort_Type" name="sort_Type" value="'+ParamValue('sortType')+'"/><input type="hidden" id="sort_Column" name="sort_Column" value="'+ParamValue('sortColumn')+'"/>'使用报表表达式来获取传递过来的参数值,其中sortTyp表示升序还是降序sortColumn表示要进行排序的字段排序标记内容如下:<DIV sortcolumn="CURRENT_EMPLOYEE_NUMBER"> </DIV>其中sortcolumn表示该排序针对的字段是CURRENT_EMPLOYEE_NUMBER,根据需要增加排序的字段。
排序的最终效果如下图:
- cognos展示技巧(三)动态排序
- cognos展示技巧(一)表格样式
- cognos展示技巧(二)变量应用
- cognos展示技巧(四)定制UI
- cognos展示技巧(五)小技巧汇总
- IBM Cognos 8 Report Studio 中的列表动态排序
- Cognos入门教程(三)- transformer安装
- Cognos仪表盘(三)资料分享
- Cognos审计模块(三)- 审计模块示例引入
- HighCharts 随机数动态曲线展示(动态数据实时展示)
- Cognos之操作小技巧
- Cognos report studio排序问题
- Cognos函数(三) - 报表函数
- IBM Cognos BI 最佳实践: Cognos 8.3 中的动态仪表板
- Cognos
- Cognos
- Cognos
- Cognos
- hdu 2767 Proving Equivalences 等价性证明 强连通分量
- linux下vmware的安装与卸载
- 浅谈SOCKET字节流和字符流的区别
- 空间划分(real time collision detection chapter 7)
- C++编写服务程序
- cognos展示技巧(三)动态排序
- Delphi7 尚未调用CoInitialize 与 Application 的图标丢失
- CSS3 Box-shadow
- linux-2.6.35内核版本中class_create()和device_create的使用
- C#调用外部exe作为子窗体或UI? VC++如何实现呢呢?...札记plus
- 敏捷外包工程之五:报价管理(一)
- ENSURE_COLUMN
- 【js特效】网页超过一屏时自动浮动在网页最上方的adsorption效果
- ZZ - Sharing files between Guest and Host Operating System