提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。 |
示例说明
在项目中需要显示多维分析报表的同时也要显示一些动态的说明。该问题可以通过宏实现,如下图:
设置方法
宏类型
类型 | 对象 | 事件 |
ClientSide | olapQuery | afterRefreshTable |
宏代码
function main(olapQuery) { var grid = olapQuery.olapTable.domAgent.getElementByBofid("olap-grid"); var rowCount = 0; //表格总行数 var columnCount = 0; //列数 var isIE = browserinfo(); if (grid) { rowCount = grid.rows.length; //debugger; //alert(isIE); if (isIE == 'IE') { columnCount = grid.rows(0).cells.length; } else { columnCount = grid.rows[0].cells.length; } //alert(rowCount + " " + columnCount); } if (rowCount > 0 && columnCount > 0) { var html = ""; //静态文字 for (var i = 1; i < rowCount; i++) { //按行生成文字 var oneLine = buildLine(i); html += oneLine; } olapQuery.elemReportTail.innerHTML = html; //设置尾部内容 } function buildLine(lineNum) { var currentColumnCount = 0; if (isIE == 'IE') { currentColumnCount = grid.rows(lineNum).cells.length; } else { currentColumnCount = grid.rows[lineNum].cells.length; } var startColumn = currentColumnCount - columnCount + 2; //起始列 var line = "" + olapQuery.olapTable.getCellValue(lineNum, startColumn - 1) + " 销售情况,其中"; for (var i = startColumn; i < currentColumnCount - 1; i++) { line += olapQuery.olapTable.getCellValue(0, i); line += olapQuery.olapTable.getCellValue(lineNum, i); } //百分比特殊处理 var persentStr = olapQuery.olapTable.getCellValue(lineNum, currentColumnCount - 1); var myvalue = parseFloat(persentStr); if (myvalue > 0) { persentStr = "<font color=red >上升 " + persentStr + "</font>"; } else if (myvalue < 0) { persentStr = "<font color=red >下降 " + Math.abs(myvalue) + "%</font>"; } else { persentStr = "<font color=red >持平</font> "; } return line += "环比<font color=red >" + persentStr + ";</font>"; } /*判断浏览器类型*/ function browserinfo() { var Browser_Name = navigator.appName; var Browser_Version = parseFloat(navigator.appVersion); var Browser_Agent = navigator.userAgent; var Actual_Version, Actual_Name; var is_IE = (Browser_Name == "Microsoft Internet Explorer"); //判读是否为ie浏览器 var is_NN = (Browser_Name == "Netscape"); //判断是否为netscape浏览器 var is_op = (Browser_Name == "Opera"); //判断是否为Opera浏览器 if (is_NN) { return "Netscape"; } else if (is_IE) { return "IE"; } else if (is_op) { return "Opera"; } else { return "other "; } } } |