...
(本文档仅供参考,宏代码有一定场景限制,如和实际应用场景不匹配,需自行调整相关宏代码,满足实际场景。)
问题说明:
有时候是年度、季度不同sheet,多加了数据标识参数,希望点击切换sheet时,参数也能自动随着sheet切换,该如何实现?
如下截图,希望点击sheet1时,参数变成西北的值:
解决方案:
代码块 | ||
---|---|---|
| ||
//电子表格客户端宏 对象 : spreadsheetReport 事件: onRender |
...
function main(spreadsheetReport, isAjaxRefreshCallback) { |
...
//debugger var paramValueMap = {"Sheet1":"西北","Sheet2":"华北"};//sheet页名称对应的参数值 |
...
var sheetName = spreadsheetReport.sheetNames[spreadsheetReport.currentSheetIndex]; |
...
var paramAlias = "区域";//参数别名 |
...
var params = spreadsheetReport.params; |
...
for(var i=0;i<params.length;i++){ |
...
var param = params[i]; |
...
if(param.alias == paramAlias){ |
...
spreadsheetReport.setParamValue(param.id,paramValueMap[sheetName],paramValueMap[sheetName]); |
...
} } } |
(1)刷新两次的正常的,因为切换sheet的时候本身要刷新,刷新的时候才设置的参数,设置了参数又会刷新一次;
(2)如果涉及真实值、显示值,参考下方的示例,显示值和真实值分开处理:
代码块 | ||
---|---|---|
| ||
//电子表格客户端宏 对象 : spreadsheetReport 事件: onRender |
...
function main(spreadsheetReport, isAjaxRefreshCallback) { |
...
//debugger |
...
var paramValueMap = {"Sheet1": |
...
{value:"西北",displayValue:"西北"} |
...
,"Sheet2":{value:"华北",displayValue:"华北"}};//sheet页名称对应的参数值 |
...
var sheetName = spreadsheetReport.sheetNames[spreadsheetReport.currentSheetIndex]; |
...
var paramAlias = "区域";//参数别名 |
...
var params = spreadsheetReport.params; |
...
for(var i=0;i<params.length;i++){ |
...
var param = params[i]; |
...
if(param.alias == paramAlias) |
...
{ spreadsheetReport.setParamValue(param.id,paramValueMap[sheetName].value,paramValueMap[sheetName].displayValue); } |
...
} |