页面树结构
转至元数据结尾
转至元数据起始

示例说明     

在电子表格中,可以实现地图染色,但是地图区域上无法显示数据。可以使用宏代码点击地图区域,弹出相关数据。如下:

设置方法

  1. 参考电子表格地图自动染色 创建地图电子表格。

  2. 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面


  3. 在报表宏界面新建服务器端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onBeforeOutput;并把下面的服务器宏代码复制到代码区域,根据实际情况进行修改。

    服务器宏类型

    类型

    对象

    事件

    ServerSide

    spreadsheetReport

    onBeforeOutput

     

    服务器宏代码

     

    function main(spreadsheetReport) {
        //地图数据在第二个sheet,获取第二个sheet,从0开始计数
        var sheet = spreadsheetReport.sheets[1];
        //获取名称字段
        var posList = sheet.getExpandedPositions("A13");
        //获取数据字段
        var posList2 = sheet.getExpandedPositions("B13");
        //把地区名称和数据添加到电子表格的MAP对象 customProperties中
        var customProperties = spreadsheetReport.customProperties;
        for (var i = 0;
        i < posList.length;
        i++) {
            var pos = posList[i];
            var pos2 = posList2[i];
            var value = sheet.getCellValue(pos);
            var value2 = sheet.getCellValue(pos2);
            if (value) {
                customProperties.put(value, value2);
            }
        }
    }
  4. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为spreadsheetReport;事件为onRender;并把下面的客户端宏代码复制到代码区域,根据实际情况进行修改。

    服务器宏类型

    类型

    对象

    事件

    ClientSide

    spreadsheetReport

    onRender

    客户端宏代码

    function main(spreadsheetReport) {
        //地图在第一个sheet,需要判断当前sheet是不是第一个sheet
        if (spreadsheetReport.currentSheetIndex != 0) return;
        //获取服务端宏中的MAP对象
        var customProperties = spreadsheetReport.elemSheetFrame.contentWindow.customProperties;
        //遍历电子表格中的图形对象,并添加点击事件
        for (var name in spreadsheetReport.shapesMap) {
            var value = customProperties[name];
            if (value) {
                var shape = spreadsheetReport.shapesMap[name];
                shape.style.cursor = "pointer";
                //传递地区名称和数据给onclick方法
                shape.setAttribute("_name", name);
                shape.setAttribute("_value", value);
                shape.onclick = function() {
                    var name = this.getAttribute("_name");
                    var value = this.getAttribute("_value");
                    //弹窗
                    var modalWindow = jsloader.resolve("freequery.common.modalWindow");
                    modalWindow.open(value, name);
                }
            }
        }
    }

     



资源下载migrate.xml

 

 

  • 无标签