页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

代码块
languagejs
title左侧点击链接右侧定位_action
collapsetrue
function paramToString(v) {
    return v == null ? null : v.toString();
}
function main(spreadsheetReport, ruleName, params, page, pageContext) {
    //配置目标单元格(员工姓名扩展字段所在单元格)
    var actionCell = "B3";
    //配置右侧报表的节点Id
    var targetResId = "I402882fd015b21fa21fa98e7015b220a522c00c0";
    var newReport = false;
    var dashlet = page.findDashletByReportId(targetResId);
    if (!dashlet)
        return;
    var portlet = dashlet.currentPortlet;
    if (!portlet) {
        return;
    }
    //获取右侧报表电子表格对象
    var actionReport = portlet.getPortletObject();
    var list = actionReport.getExpandedPositions(actionCell);
    //获取目标单元格
    var cell = getInsCell(params, list, actionReport);
    var doc = cell.ownerDocument;
    var c = cell;
    var top = -1;
    var scale = doc._scale || 1;
    var posScale = domutils.isMobile() ? 1 : scale;
    while (c) {
        top += c.offsetTop;
        c = c.offsetParent;
    }
    var frozenColumn = doc.getElementById('frozenColumn');
    var frozenTop = frozenColumn ? frozenColumn.clientHeight : 0;
    var el;
    if (domutils.isIE()) {
        el = doc.documentElement;
    } else {
        el = doc.body;
    }
    var bodyWidth = doc.documentElement.clientWidth;
    var bodyHeight = doc.documentElement.clientHeight;
    if (doc.divScroll) {
        doc.divScroll.scrollTop = (top + cell.clientHeight + 2) * posScale;
        if (top - doc.divScroll.scrollTop / posScale < frozenTop) {
            doc.divScroll.scrollTop = (top - frozenTop + 1) * posScale;
        }
    } else {
        el.scrollTop = (top - 2 * cell.clientHeight + 2) * posScale;
        if (top - el.scrollTop / posScale < frozenTop) {
            el.scrollTop = (top - frozenTop + 1) * posScale;
        }
    }
    //获取目标单元格
    function getInsCell(params, list, actionReport) {
        var cellLight;
        for (var i = 0; i < list.length; i++) {
            var pos = actionReport.parseCellIndex(list[i]);
            var cell = actionReport.getCell(pos[0], pos[1]);
            if (cell.bgColor) {
                cell.bgColor = "";
            }
            //高亮目标单元格
            if (cell.innerHTML == params[0][0]) {
                cellLight = actionReport.getCell(pos[0], pos[1]);
                cellLight.bgColor = "yellow";
            }
        }
        return cellLight;
    }
}

关键对象总结

  • 在服务端中通过spreadsheetReport.printExpandedPositions()打印单元格,在客户端宏中才能通过actionReport.getExpandedPositions(actionCell);
    或者数据列的扩展结果
  • 通过报表id,获取目标报表对象 

    var dashlet = page.findDashletByReportId(targetResId); 

     if (!dashlet) return; var portlet = dashlet.currentPortlet; 

     if (!portlet) { return; }

    var actionReport = portlet.getPortletObject(); //获取右侧报表电子表格对象 

资源下载

报表资源:页面实现报表的超链接效果.xml