示例说明
在项目中有时需要对报表显示的内容进行切换显示,如下示例中,报表初始化时显示“明细报表”;点击“显示汇总”则隐藏“明细报表”,显示“汇总报表”;点击“显示明细”则隐藏“汇总报表”,显示“明细报表”。
设置方法
- 在电子表格设计器 Excel 中,创建一张电子表格报表。
- 在浏览器的“分析展现”节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建服务器端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onBeforeOutput;并把下面的服务器宏代码复制到代码区域。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onRender;并把下面的客户端宏代码复制到代码区域。
服务器宏类型
类型 | 对象 | 事件 |
---|---|---|
ServerSide | spreadsheetReport | onBeforeOutput |
服务器宏代码
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
function main(spreadsheetReport) {
spreadsheetReport.printExpandedPositions(); //打印扩展位置,使得客户端宏可以调用getExpandedPositions方法
} |
客户端宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | spreadsheetReport | onRender |
客户端宏代码
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
function main(spreadsheetReport, isAjaxRefreshCallback) {
var detail = false;
var cell = spreadsheetReport.getCell("B2"); //点击的单元格
cell.style.cursor = "pointer"; //鼠标变手
var B3List = spreadsheetReport.getExpandedPositions("B3"); //获取B3的位置
var B3First = spreadsheetReport.parseCellIndex(B3List[0]); //获取B3第一个
var B3Row = spreadsheetReport.getCell(B3First[0], B3First[1]).parentNode; //获取B3所在的TR
var B5List = spreadsheetReport.getExpandedPositions("B5"); //获取所有B5的位置
var B5Last = spreadsheetReport.parseCellIndex(B5List[B5List.length - 1]); //B5最后一个
var B5Row = spreadsheetReport.getCell(B5Last[0], B5Last[1]).parentNode; //获取B5所在的TR
var B6List = spreadsheetReport.getExpandedPositions("B6"); //获取B6的位置
var B6First = spreadsheetReport.parseCellIndex(B6List[0]); //获取B6第一个
var B6Row = spreadsheetReport.getCell(B6First[0], B6First[1]).parentNode; //获取B6所在的TR
var B8List = spreadsheetReport.getExpandedPositions("B8"); //获取所有B8的位置
var B8Last = spreadsheetReport.parseCellIndex(B8List[B8List.length - 1]); //B8最后一个
var B8Row = spreadsheetReport.getCell(B8Last[0], B8Last[1]).parentNode; //获取B8所在的TR
cell.onclick = function() {
if (detail) {
var tr = B3Row;
//循环显示从B3-B5的所有行
while (tr && tr != B5Row) {
tr.style.display = "";
tr = tr.nextSibling.nextSibling;
}
B5Row.style.display = "";
var tr = B6Row;
//循环隐藏从B6-B8的所有行
while (tr && tr != B8Row) {
tr.style.display = "none";
tr = tr.nextSibling.nextSibling;
}
B8Row.style.display = "none";
cell.innerText = "显示汇总";
detail = false;
} else {
var tr = B3Row;
//循环隐藏从B3-B5的所有行
while (tr && tr != B5Row) {
tr.style.display = "none";
tr = tr.nextSibling.nextSibling;
}
B5Row.style.display = "none";
var tr = B6Row;
//循环显示从B6-B8的所有行
while (tr && tr != B8Row) {
tr.style.display = "";
tr = tr.nextSibling.nextSibling;
}
B8Row.style.display = "";
cell.innerText = "明细";
detail = true;
}
}
cell.onclick();
} |
示例资源:电子表格切换报表.xml
borderColor | #BBBBBB |
---|---|
bgColor | #F0F0F0 |
borderWidth | 1 |
borderStyle | solid |