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


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

1. 示例效果

  • 预期效果

2. 操作步骤

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

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

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

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

  • 步骤五:新建宏“鼠标提示”。事件:“ onAfterRender(组件渲染后)

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

function main(page: IPage, portlet: ITableSheetPortlet) {
    createTooltip(portlet.getCell('I2'), portlet.getCustomProperty("I5"));
    createTooltip(portlet.getCell('H2'), portlet.getCustomProperty("H5"));
    createTooltip(portlet.getCell('G2'), portlet.getCustomProperty("G5"));
}

function createTooltip(cell: ISheetCell, tip: Object) {
    let div = document.createElement("div");
    div.style.position = "absolute";
    div.style.border = "1px solid #C4E1FF";
    div.style.padding = "10px";
    div.style.backgroundColor = "#fff"; //设置提示框背景颜色
    div.style.textAlign = 'left';
    div.style.color = 'red';
    div.style.display = 'none';

    div.innerHTML = tip.toString(); //设置提示内容
    let ele = cell.appendChild(div);
    cell.addEventListener('mousemove', function (e: SheetEvent) {
        ele.setStyle({
            left: (e.clientX + 10) + 'px',
            top: e.clientY + 'px'
        });        
        ele.setVisible(true);
    });
    cell.addEventListener('mouseleave', function () {
        ele.setVisible(false);
    });
    return ele;
}


  • 步骤六:新建宏“服务端输出提示信息”。事件:“ onBeforeOutput(在输出结果前)

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

function main(pageServer: IPageServer, portletServer: ITableSheetPortletServer) {
    let sheet = portletServer.getSheetByName("Sheet1"); //根据sheet名称获取sheet
 
    //下面的内容根据单元格,获取要显示出来的内容。并且添加到customProperty中去
    let valueI5 = getDisplayCellValue(sheet, "I5");
    portletServer.setCustomProperty("I5", valueI5);
    let valueH5 = getDisplayCellValue(sheet, "H5");
    portletServer.setCustomProperty("H5", valueH5);
    let valueG5 = getDisplayCellValue(sheet, "G5");
    portletServer.setCustomProperty("G5", valueG5);
}

//获取单元格的值
function getCellValue(cell: any) {
    if (!cell) return null;
    if (typeof cell.length == 'number') {
        let ret = [];
        for (let i = 0; i < cell.length; i++) {
            ret.push(cell[i].value);
        }
        return ret;
    } else {
        return cell.value;
    }
}

//获取单元格的显示值
function getDisplayCellValue(sheet: ISheetServer, position: string) {
    let expandedPositions = sheet.getExpandedPositions(position);
    let cell = sheet.getCell(expandedPositions[0]);
    let value = getCellValue(cell).toString().replaceAll("\\n", "<br>"); //替换换行符。
    return value;
}

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

3. 下载资源

鼠标提示扩展.xml

  • 无标签