示例说明
在灵活分析报表的表格中,根据某字段值的范围增加红绿灯,显示预警信息。如下图所示,小于1000的显示为红灯。
- 在资源定制中,创建一张灵活分析;
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为simpleReport;事件为onRenderTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | simpleReport | onRenderTable |
宏代码
function main(simpleReport, simpleReportContext) { //循环找出销量大于1000的城市 for (var m = simpleReport.grid.getHeaderRows(); m < simpleReport.grid.getRowCount(); m++) { //根据字段别名,找到该列在表格中对应的列号 var n = simpleReport.getFieldIndexByAlias('数量'); var x = simpleReport.getFieldIndexByAlias('顾客所在城市'); //根据行号、列号,找到对应的单元格对象 var c = simpleReport.grid.getCell(m, n); var value = c.innerText; var floatValue = parseFloat(value.replace(",", "")); c.align = 'right'; //操作单元格对象属性innerHTML,实现销量大于1000时设置绿灯,否则设置红灯 //注:如果是自定义图片,请事先将图片放到smartbi.war\img\目录下 if (!isNaN(floatValue) && floatValue > 1000) { c.innerHTML += '<img src="./img/alertdialog/Icon_8.gif" />'; } else { c.innerHTML += '<img src="./img/alertdialog/Icon_4.gif" />'; } } }
关键对象总结
- 根据字段名称或别名获取其在表格中的列号:simpleReport.getFieldIndexByName("SalesNum")、simpleReport.getFieldIndexByAlias("数量");
- 获取单元格对象:simpleReport.grid.getCell(m, n);