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


提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

1. 示例效果

点击“操作”列下的“明细”,会跳转到目标报表“销售明细”,并传递相对应的参数过去


2. 操作步骤

  • 步骤一: 创建一个即席查询“销售明细”,数据如下

  • 步骤二: 新建一个空白的自助仪表盘

  • 步骤三:  拖入"web电子表格",双击”web电子表格“进入编辑界面

  • 步骤四:数据如下,保存退出

  • 步骤五:鼠标右键进入宏管理页面

  • 步骤六:新建宏“明细_添加跳转规则”。事件:“ onBeforeOutput(在输出结果前)

把下面宏代码复制到代码区域

function main(pageServer: IPageServer, portletServer: ITableSheetPortletServer) {
    let sheet = portletServer.getSheetByName("Sheet2");
    let positions = "E3".split(",");
    for (let i = 0; i < positions.length; i++) {
        let position = positions[i].trim();
        let expandedPositions = sheet.getExpandedPositions(position);
        for (let j = 0; j < expandedPositions.length; j++) {
            let cell = sheet.getCell(expandedPositions[j]);
            if (true) {
                addLink(portletServer, sheet, cell);
            }
        }
    }
    
}

function addLink(portletServer: ITableSheetPortletServer,
    sheet: ISheetServer, cell: ISheetCellServer) {
    sheet.addRuleLink(cell.getCellPosition(), "明细_添加跳转规则",
        [getCellValue(cell.getRelativeCells("B3")), getCellValue(cell.getRelativeCells("C3"))]);
}

function getCellValue(cell: any) {
    if (!cell) return null;
    if (typeof cell.length == 'number') {
        var ret = [];
        for (var i = 0; i < cell.length; i++) {
 		 if(cell[i]!=null)
            ret.push(cell[i].value);
        }
        return ret;
    } else {
        return cell.value;
    }
}

  • 步骤七:新建宏“明细_点击跳转”。事件:“ onLinkClick(点击链接时)

把下面宏代码复制到代码区域

function main(page: IPage, portlet: ITableSheetPortlet, ruleName: string, parameterValues: object[]) {
    if (ruleName != "明细_添加跳转规则") return;
	//打开指定资源ID的报表,并传递参数“产品类别”和“年”的值给指定报表资源
    page.openResourceInTab("I8a8a9f6d017b299c299cb640017b2a6ccb7f0c5c",
        [
            { name: "CategoryName", alias: "CategoryName", value: paramToString(parameterValues[0]) },
            { name: "年", alias: "年", value: paramToString(parameterValues[1]) }
        ]
    );

}

function paramToString(v: any) {
    return v == null ? null : v.toString();
}

  • 步骤八:点击 保存。重新访问报表,可看到效果已实现

3. 下载资源

跳转规则.xml

  • 无标签