本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。 |
在项目中有时需要对报表显示的内容进行切换显示,如下示例中,报表初始化时显示“明细报表”;点击“显示汇总”则隐藏“明细报表”,显示“汇总报表”;点击“显示明细”则隐藏“汇总报表”,显示“明细报表”。
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
function main(spreadsheetReport) { spreadsheetReport.printExpandedPositions(); //打印扩展位置,使得客户端宏可以调用getExpandedPositions方法 } |
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onRender |
function main(spreadsheetReport) { var detail = false; var cell = spreadsheetReport.getCell("A2"); //点击的单元格 cell.style.cursor = "pointer"; //鼠标变手 var A3List = spreadsheetReport.getExpandedPositions("A3"); //获取A3的位置 var A3First = spreadsheetReport.parseCellIndex(A3List[0]); //获取A3第一个 var A3Row = spreadsheetReport.getCell(A3First[0], A3First[1]).parentNode; //获取A3所在的TR var A7List = spreadsheetReport.getExpandedPositions("A7"); //获取所有A7的位置 var A7Last = spreadsheetReport.parseCellIndex(A7List[A7List.length - 1]); //A7最后一个 var A7Row = spreadsheetReport.getCell(A7Last[0], A7Last[1]).parentNode; //获取A7所在的TR var A8List = spreadsheetReport.getExpandedPositions("A8"); //获取A8的位置 var A8First = spreadsheetReport.parseCellIndex(A8List[0]); //获取A8第一个 var A8Row = spreadsheetReport.getCell(A8First[0], A8First[1]).parentNode; //获取A8所在的TR var A10List = spreadsheetReport.getExpandedPositions("A10"); //获取所有A10的位置 var A10Last = spreadsheetReport.parseCellIndex(A10List[A10List.length - 1]); //A10最后一个 var A10Row = spreadsheetReport.getCell(A10Last[0], A10Last[1]).parentNode; //获取A3所在的TR cell.onclick = function() { if (detail) { var tr = A3Row; //循环显示从A3-A7的所有行 while (tr && tr != A7Row) { tr.style.display = ""; tr = tr.nextSibling.nextSibling; } A7Row.style.display = ""; var tr = A8Row; //循环隐藏从A8-A10的所有行 while (tr && tr != A10Row) { tr.style.display = "none"; tr = tr.nextSibling.nextSibling; } A10Row.style.display = "none"; cell.innerText = "显示明细"; detail = false; } else { var tr = A3Row; //循环隐藏从A3-A7的所有行 while (tr && tr != A7Row) { tr.style.display = "none"; tr = tr.nextSibling.nextSibling; } A7Row.style.display = "none"; var tr = A8Row; //循环显示从A8-A10的所有行 while (tr && tr != A10Row) { tr.style.display = ""; tr = tr.nextSibling.nextSibling; } A10Row.style.display = ""; cell.innerText = "显示汇总"; detail = true; } } cell.onclick(); } |